我有一个使用更新面板使用 ASP .Net 构建的简单联系表单。一切都按预期工作,但我看到了错误
recaptcha__en.js: Uncaught Error :reCAPTCHA 已在此元素中呈现
在控制台窗口中
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script src="https://www.google.com/recaptcha/api.js?onload=pageLoad&render=explicit" async defer></script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div class="g-recaptcha" data-sitekey="XXXX"></div>
</ContentTemplate>
</asp:UpdatePanel>
<script language="javascript" type="text/javascript">
function pageLoad() {
$('.g-recaptcha').each(function (index, obj) {
grecaptcha.render(obj, { 'sitekey': 'XXXX' });
});
}
</script>
我最初添加了
onload=pageLoad&render=explicit
好像没有检查验证码并且您单击按钮发送,验证码消失了。添加 onload=pageLoad&render=explicit
到脚本行解决了这个问题,但现在我得到了上述错误。如果我尝试删除一些元素,那么其他东西会中断,即验证码不显示或回发时不显示?
最佳答案
几天前,我在使用动态登录和创建表单时遇到了同样的问题。原因是我在同一个元素上渲染了两次。
Google ReCaptcha 抛出异常通知所述问题。
我的解决方案是使用 try{...}catch(event){...}
作为 grecaptcha.render()
的包装器
try{
grecaptcha.render('elementID', {
'sitekey' : 'key',
'badge' : 'att',
'size' : 'att',
'tabindex' : 0,
'callback' : function(token) {
//..
},
'expired-callback' : function() {
//...
},
'error-callback' : function() {
//...
},
'isolated' : false
});
}catch(error){/*possible duplicated instances*/}`
关于javascript - reCAPTCHA 已在此元素中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54110489/