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 recaptcha替换为任何其他外部源。


  当document.ready时,脚本已经完成运行?


答案是:是的。

3.您应该加载外部脚本(从recaptcha.net左右)。
    参见例如此链接:JavaScript - function to load external JS files is needed

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

相关文章:

javascript - Javascript文字对象中的私有(private)变量

javascript - jQuery ajax简单发布/获取

jQuery 增量读取 AJAX 流?

javascript - 列表中的所有按钮返回相同的ID

jquery - 使用 jQuery 创建表单, session 变量在正常提交后消失

jquery - htaccess和哈希隐藏

javascript - 无限边框颜色循环

javascript - 使用ng-click或jquery检测平板电脑上的长按

javascript - 添加两个值并保存结果以供重用

jquery - 在标签上可编辑,我如何防止它失去对点击的关注?