javascript - reCAPTCHA 已在此元素中呈现

标签 javascript asp.net google-apps-script updatepanel recaptcha

我有一个使用更新面板使用 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/

相关文章:

javascript - 使用 lodash 创建填充缺失值的新数组

c# - 适用于 Web 和移动设备的 ASP.NET Web API 社交身份验证

javascript - 从对象获取 JavaScript 数组

javascript - 使用任何动画更改 SPAN 类

asp.net - 如何从 asp.net 网页中的 xml 文件调用节点

google-apps-script - 在 Google Analytics 中跟踪 Google 表格

api - Google Apps脚本和外部API

javascript - 如何使用 Google App 脚本根据条件发送带有 PDF 文件附件的电子邮件

javascript - new到底在做什么?

asp.net - Server.ScriptTimeout 在范围内设置全局?