это кажется довольно простой проблемой, но я мог выяснить, как убедиться, что jquery выполняется, прежде чем я проверю элементы HTML. У меня есть цикл, чтобы войти в панель поиска, прочитать результаты и проверить, возвращают ли условия поиска что-нибудь.
Это делает то, что я хочу, за исключением того, что структуры if проверяют наличие элемента еще до того, как будет нажата кнопка поиска. Веб-сайт, на котором я запускаю расширение: https://www.avnet.com/wps/portal/us
var searchTerms = ["internal", "null?","random", "asdfsadfa", "relay"];
var i;
for (i = 2; i < searchTerms.length; i++) {
var curTerm = searchTerms[i];
$('#searchInput').val(curTerm);
$('.input-group-addon').click();
if($(".avn-noresultspage-main-section")[0]){
$(".avn-noresultspage-main-section").css( "border", "10px solid red" );
alert('This is a Null!');
}else{
alert('Not a Null!');
}
}
Итак, немного погуглив, я вижу, что функция цепочки/обратного вызова — это то, что нужно. Пример функции обратного вызова Поэтому я вызываю функцию проверки элементов после щелчка в jquery. Но сейчас ничего не происходит. Я просто запускаю цикл for, а последний щелчок даже не был выполнен?
Как правильно связать действия?
var searchTerms = ["internal", "null?","random", "asdfsadfa", "relay"];
var i;
for (i = 2; i < searchTerms.length; i++) {
var curTerm = searchTerms[i];
$('#searchInput').val(curTerm);
$('.input-group-addon').click(function() {
if($(".avn-noresultspage-main-section")[0]){
$(".avn-noresultspage-main-section").css( "border", "10px solid red" );
alert('This is a Null!');
}else{
alert('Not a Null!');
}
} );
}
Обновление: я пытался использовать функцию тайм-аута, но, кажется, также заморозил выполнение клика.
var searchTerms = ["internal", "null?","random", "asdfsadfa", "relay"];
var i;
for (i = 2; i < searchTerms.length; i++) {
var curTerm = searchTerms[i];
setTimeout(function() {
$('#searchInput').val(curTerm);
$('.input-group-addon').click();
}, (3 * 1000));
if($(".avn-noresultspage-main-section")[0]){
$(".avn-noresultspage-main-section").css( "border", "10px solid red" );
alert('This is a Null!');
}else{
alert('Not a Null!');
}
}
Есть ли способ сделать задержку после клика?
Когда я скопировал ваш код на указанном веб-сайте, он работает нормально. Я не видел никаких проблем.
Код будет работать нормально, но не будет делать то, что задумано. Он проверяет веб-страницу на наличие результатов поиска, пока действие нажатия кнопки не было завершено браузером. $('.input-group-addon').click(); предполагается завершить до того, как я проверю, существует ли диапазон классов $(".avn-noresultspage-main-section")[0]
Итак, вы имеете в виду, что вы нажимаете, используя код.. не нажимая вручную, я думаю..