我正在尝试使用Google的功能来检查页面请求是来自人还是机器人。 通过这种方式,我希望包含一个不可见的验证码,并在页面完成加载后立即提交验证。 我已经浏览了谷歌文档https://developers.google.com/recaptcha/docs/invisible,正常的例子对我来说很好。但我试图以一种方式调整它,一旦页面加载,grecaptcha.execute()就会触发,我已经尝试过window.onload,或者(窗口).ready(),我得到同样的错误
grecaptcha is not defined
当然我认为这是因为grecaptcha脚本没有准备好,事实上如果我设置1秒或2秒的超时,它将执行正常。
我尝试将“onload”参数添加到api.js但没有运气......顺便说一下,api.js只包含HEAD中的实际重新接收脚本“recaptcha__en.js”
我不需要实际的FORM或提交任何联系信息,只需要验证查看该页面的主题是人还是机器人
任何想法/建议将不胜感激! 谢谢!
编辑:按要求添加代码:
<html>
<head>
<script>
//called only when I set the timeout
function onSubmit(){
console.log("Submitted")
}
//not being called by the "onload parameter of the api.js script"
function loadCaptcha(){
console.log("loaded")
setTimeout(function(){grecaptcha.execute()},2000)
}
</script>
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
<!--<script src='https://www.google.com/recaptcha/api.js?onload="loadCaptcha"' async defer></script>----it doesnt make any difference for my case-->
</head>
<body>
<div class="g-recaptcha"
data-sitekey="xxxxxxxxxxxxxxxxxxxxxxxxxx"
data-callback="onSubmit"
data-size="invisible">
</div>
<script>
//Window.onload = setTimeout(function(){grecaptcha.execute()},2000) this works!
Window.onload = grecaptcha.execute() //----this doesn't work---//
</script
</body>
答案 0 :(得分:1)
您可以为定义onload回调的网址设置一个参数:
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback">
</script>
<script>
function onloadCallback(){
grecaptcha.execute();
}
</script>
答案 1 :(得分:0)
喔!!我只是用它来工作
$(window).on('load',function(){
grecaptcha.execute()
})
感谢@jonasw指出问题出在window.onload event = D
上