javascript - jquery 查找并替换脚本代码中的字符串然后运行此脚本?

标签 javascript jquery

不幸的是,我必须使用 VPN 才能访问 google,包括 recapcha。一些 chrome 扩展可以将它们重定向到 recaptcha.net,否则我根本看不到验证码......在大多数情况下有效,但有时无效。现在我得到了这个网站,源代码显示替换没有发生。 就像:

<div class="gglcptch gglcptch_v3"><input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response"> <script src="https://www.google.com/recaptcha/api.js?render=6LesAYIUAAAAAMj2s2eUJfWEJNiAZTdeGONG5r5w"></script>
                            <script>
                              grecaptcha.ready(function() {
                                  grecaptcha.execute('6LesAYIUAAAAAMj2s2eUJfWEJNiAZTdeGONG5r5w', {action: 'BWS_reCaptcha'}).then(function(token) {
                                    document.querySelectorAll( "#g-recaptcha-response" ).forEach( elem => ( elem.value = token ) );
                                  });
                              });
                             </script></div>

所以我组装了这段代码:

$(document).ready(function(){

$('.gglcptch gglcptch_v3').html(function(index,html){
    return html.replace(/www\.google\.com\/recaptcha\//g,'recaptcha.net/recaptcha/');
});


}); 

Chrome 开发人员没有显示错误,但替换仍然没有发生。 所以我的猜测是顺序?当 document.ready 时,脚本已经完成运行? 我该怎么办?

最佳答案

<强>1。你的选择器是错误的。应该像下面这样:

$('.gglcptch.gglcptch_v3').html(
   // ... your function
)

$(document).ready(function(){

$('.gglcptch.gglcptch_v3').html(function(index,html){
    return html.replace(/www\.google\.com\/recaptcha\//g,'recaptcha.net/recaptcha/');
});

console.log($('.gglcptch.gglcptch_v3 script').attr('src'))

}); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="gglcptch gglcptch_v3"><input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response"> <script src="https://www.google.com/recaptcha/api.js?render=6LesAYIUAAAAAMj2s2eUJfWEJNiAZTdeGONG5r5w"></script>
                            <script>
                              grecaptcha.ready(function() {
                                  grecaptcha.execute('6LesAYIUAAAAAMj2s2eUJfWEJNiAZTdeGONG5r5w', {action: 'BWS_reCaptcha'}).then(function(token) {
                                    document.querySelectorAll( "#g-recaptcha-response" ).forEach( elem => ( elem.value = token ) );
                                  });
                              });
                             </script></div>

<强>2。但这不会将 google recapcha 替换为任何其他外部来源。

when document.ready, script already done running?

答案是:是的。

<强>3。您应该加载外部脚本(来自 recaptcha.net 等)。 参见例如此链接:JavaScript - function to load external JS files is needed

关于javascript - jquery 查找并替换脚本代码中的字符串然后运行此脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60472675/

相关文章:

jquery - 当我选择javascript元素时页面跳转到顶部?

jquery - JsTree - 通过单击父节点展开

javascript - jQuery - 获取最高图像的高度,将其他图像的高度差应用于上边距

jquery - 如何直接在浏览器中使用VueJS插件?

javascript - 在光标位置拆分 div 内容

javascript - 通过javascript在cmd(Windows)上运行python脚本

javascript - 如何在捕获阶段触发自定义事件

javascript - JavaScript 中的计时 : Finding a way to make setInterval alternate time

javascript - 网站覆盖不工作 "Uncaught ReferenceError: closeNav is not defined"

javascript - 如何使用 JqGrid 子网格进行内联编辑?