我们正在尝试在网站上实施新的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>