Нажатие на кнопку срабатывает только в конце массива
Есть код, но он выполняется только в конце выполнения массива, то есть только после того как будут по очереди подставлены все значения:
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, время: 20:44. |