jquery найти и заменить строку в коде скрипта и запустить этот скрипт? - PullRequest
0 голосов
/ 01 марта 2020

К сожалению, я должен использовать 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 dev не показывал ошибку, но замена по-прежнему не происходила. Так что я думаю, последовательность? когда document.ready, скрипт уже запущен? Что мне делать 100

1 Ответ

2 голосов
/ 01 марта 2020

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 Reaptcha на любой другой внешний источник.

когда document.ready, скрипт уже запущен?

Ответ: Да .

3. Вы должны загрузить внешний скрипт (из recaptcha. net или около того). См., Например, эту ссылку: JavaScript - необходима функция для загрузки внешних JS файлов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...