Нажатие на кнопку срабатывает только в конце массива
Есть код, но он выполняется только в конце выполнения массива, то есть только после того как будут по очереди подставлены все значения:
var websitesArr = [ "ya.ru", "google.com", "ok.ru", "vk.com", "fb.com" ]; for (var i=0; i<websitesArr.length; i++) { $('input[name=url]').val(websitesArr[i]); $('input[name=proceed]').trigger('click'); } Как выполнять код каждый раз, когда вставляется новое значение в input name=url? |
angelzzz,
вы что-то не договариваите ... <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> input[name=proceed]{ width: 400px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $('input[name=proceed]').on("click",function() { this.value += " "+$('input[name=url]').val() }) var websitesArr = [ "ya.ru", "google.com", "ok.ru", "vk.com", "fb.com" ]; for (var i=0; i<websitesArr.length; i++) { $('input[name=url]').val(websitesArr[i]); $('input[name=proceed]').trigger('click'); } }); </script> </head> <body> <input type="text" name="url"><input type="text" name="proceed"> </body> </html> |
ваш код делает что-то не то.
я пытаюсь выполнять свой скрипт на чужом сайте. Суть скрипта: 1. найти форму с инпутом, взять ее значение 2. найти значение с определенными свойствами 3. добавить их в массив 4. взять значение из другого массива, подставить в форму с инпутом 5. программно нажать кнопку 6. после обновления повторить операции Что есть на данный момент var jq = document.createElement('script'); jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"; document.getElementsByTagName('head')[0].appendChild(jq); jq.addEventListener('load',function () { var result = []; var websiteName = $('input[name=url]').val(); var styleRedEl = $('b[style*="color:red"]').text(); result[websiteName]=styleRedEl; console.log ( result ); var websitesArr = [ "ya.ru", "google.com", "ok.ru", "vk.com", "fb.com" ]; for (var i=0; i<websitesArr.length; i++) { $('input[name=url]').val(websitesArr[i]); //var step = $('input[name=url]').val(); //alert (step); //to see result on this step $('input[name=proceed]').trigger('click'); // к вопросу 2 } }); выполняю это через сниппет google chrome (если есть решения лучше, то буду благодарен за советы). что не так: сейчас после запуска скрипта по очереди вводятся все данные из массива в инпут и только после этого выполняется нажатие на кнопку (программно) и перезагружается страница. |
Цитата:
он делает это Цитата:
|
что тут можно изменить? или как решить проблему?
|
angelzzz,
дождаться ответа сервера и продолжить со следующим элементом ... |
Возможно все сделал. Только не могу проверить, после выполнения и обновления страницы 1 раз дальше ничего не происходит. Напомню, что делаю это в сниппете, может через tampermonkey делатЬ? ноя не могу понять как адаптировать код к tampermonkey
|
Код все еще не работает. У кого-нибудь есть варианты?
|
angelzzz,
если страница перезагружается, то хранить промежуточные результаты в localStorage, подробнее не подскажу |
Часовой пояс GMT +3, время: 19:00. |