【发布时间】:2015-03-02 20:08:44
【问题描述】:
我们正在尝试在我们的网站上实现新的 Google reCAPTCHA,但是当我们尝试使用命名空间函数从中加载回调时,回调不会运行。
将回调更改为不使用回调可以正常工作。我们正在使用 Google Maps API 做类似的事情,效果很好。
有没有办法解决这个问题,或者这是新的 Google reCAPTCHA 系统的限制?
代码
<script>
var namespace = {};
namespace.captcha = function() {
alert("Hello world!")
};
</script>
<script src="//www.google.com/recaptcha/api.js?onload=namespace.captcha&render=explicit" async defer></script>
真正的问题是,我们希望使用显式模块化模式将所有代码封装在命名空间脚本中。解决这个问题的一种方法是创建一个全局变量并将其用作回调,但这并没有退出我所希望的。
全局回调
<script>
var namespace = {};
namespace.captcha = (function() {
function call() {
alert("Hello world!")
};
window.callback = namespace.captcha.call;
return call:call;
})();
</script>
<script src="//www.google.com/recaptcha/api.js?onload=callback&render=explicit" async defer></script>
【问题讨论】:
-
是的,看起来他们不允许这样做。
-
“将回调更改为不使用回调可以正常工作”您的意思是不使用命名空间吗?
-
我遇到了同样的问题,加上我们缩小函数名称的问题,所以我们的全局命名空间函数名称是不可预测的。
-
使用 有什么问题
-
我也无法让 recaptcha V2 使用命名空间的模块函数作为回调。
标签: javascript recaptcha captcha