2017-08-01 50 views
2

我有一個表單與多個字段&谷歌recaptcha我彈出模型中打開。第一次一切工作正常。谷歌reCAPTCHA在引導模型上第二次失敗

enter image description here

但是當我關閉彈出窗口,並嘗試在那個時候我遇到錯誤「不Found.The請求的URL沒有此服務器上找到」打開彈出第二次。 enter image description here

這裏是我的HTML代碼:

<div id="RecaptchaField2"></div> 

的Javascript:

<script type='text/javascript'> 
    var CaptchaCallback = function() { 
     if ($('#RecaptchaField2').length) { 
     grecaptcha.render('RecaptchaField2', {'sitekey' : 
      '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 
     } 
    } 

    $(".inq-button").click(function(){ 
     setTimeout(function() { 
      var script = document.createElement('script'); 
      script.src = 'https://www.google.com/recaptcha/api.js? 
      onload=CaptchaCallback&render=explicit'; 
      script.type = 'text/javascript'; 
     document.body.parentNode.appendChild(script);   
    }, 100); 
    }); 
</script> 

這個問題折磨着我自上週以來,我仍然無法弄清楚爲什麼會發生。

您能否就此給我適當的建議?

任何形式的幫助將不勝感激。

在此先感謝。

+0

何時刪除動態添加的「captchacha」腳本元素? –

+0

@YohanesGultom,我試圖刪除 onclick函數開頭的腳本元素。 –

+0

你確定它工作正常嗎?不應該在'$(「.inq-button」)內完成。click()'在你添加一個新的之前? –

回答

1

使用這個腳本,它會加工。

<script> 
    var CaptchaCallback = function() { 
    if ($('#RecaptchaField1').length) { 
     grecaptcha.render('RecaptchaField1', {'sitekey' : '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 
    } 
    if ($('#RecaptchaField2').length) { 
     grecaptcha.render('RecaptchaField2', {'sitekey' : '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 
    } 
} 

var j = 1; 

$(".inq-button").click(function(){ 


    setTimeout(function() { 
    if(j){ 
     var script = document.createElement('script'); 
     script.src = 'https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit'; 
     script.type = 'text/javascript'; 
     document.body.parentNode.appendChild(script); 
} 
else 
{ 
    $('#RecaptchaField2').empty(); 
    removejscssfile("api.js", "js"); //remove all occurences of "somescript.js" on page 
    var onloadCallback = function() { 

     if ($('#RecaptchaField2').length) { 
      grecaptcha.render('RecaptchaField2', {'sitekey' : '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 


    } 
    }; 
    var script = document.createElement('script'); 
    script.src = 'https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit'; 
    script.type = 'text/javascript'; 
    document.body.parentNode.appendChild(script); 
    } 

    j = 0; 

    }, 100); 

    }); 


function removejscssfile(filename, filetype){ 
    var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from 
    var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for 
    var allsuspects=document.getElementsByTagName(targetelement) 
    for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
    if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1) 
    allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild() 
    } 
} 
</script> 
+0

完美的作品!你節省了我很多時間。謝謝! –

1

:你需要先清除驗證碼呈現爲grecaptcha.reset()

然而,爲了讓此功能工作,你必須明確地呈現reCaptacha這樣的:

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script> 
+0

@CKG,我已經試着用這個函數來明確地呈現reCaptacha,但我得到錯誤「找不到對象!「。 –