web-dev-qa-db-fra.com

reCAPTCHA a déjà été rendu dans cet élément

J'ai un formulaire de contact simple construit avec ASP==== .net à l'aide de l'US UpdatePanel. Tout fonctionne comme prévu mais je vois l'erreur

Recaptcha__en.js: Erreur non capturée: ReCAPTCHA a déjà été rendu dans cet élément

dans la fenêtre de la console

<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>

J'ai initialement ajouté onload=pageLoad&render=explicit Comme si le CAPTCHA n'était pas coché et que vous avez cliqué sur le bouton pour envoyer, le CAPTCHA a disparu. Ajouter onload=pageLoad&render=explicit à la ligne de script résolue ceci, mais maintenant, je reçois l'erreur ci-dessus.

Si j'essaie d'enlever certains éléments, quelque chose d'autre casse I.E. CAPTCHA ne pas afficher ou n'est pas affiché sur le post-plan?

6
Computer

J'ai eu le même problème il y a quelques jours avec un formulaire de connexion et de création dynamique. La raison était que je rangeais deux fois au même élément.

Le Google ReCAPTCHA jette une exception en notifiant ledit problème.

Ma solution était utilisée try{...}catch(event){...} comme emballage pour 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*/}`
3
Carlos Espinoza