Зациклить клик по кнопке через js с условием
Необходимо зациклить клик по кнопке через js и если объект пропал на странице то прекратить кликать.
Скажем так, заходим на страницу, видим кнопку с классом "button-red ng-star-inserted", отлично начинаем кликать с периодичностью 1.5 секунды и продолжаем до тех пор пока этот класс присутсвует на странице. Как только класс "button-red ng-star-inserted" пропал останавливаем скрипт.
вот модифицированные код который дали совет я его поставил но он продолжает кликать даже если объекта нет
var interval = setInterval(function(){
var buttons = document.getElementsByTagName('button');
for (var i = buttons.length - 1; i >= 0; i--) {
var button = buttons[i];
if(button.getAttribute('class') == 'button-red ng-star-inserted') {
button.click();
}
}
}, 1500);
Ответы (2 шт):
Попробуй так..
var interval = setInterval(function(){
var buttons = document.getElementsByTagName('button');
var f = true;
for (var i = buttons.length - 1; i >= 0; i--) {
var button = buttons[i];
if(button.getAttribute('class') == 'button-red ng-star-inserted') {
f = false;
button.click();
}
}
if(f) {
clearInterval(interval);
console.log("Кнопки не существует, или она не успела подгрузится за 1700мс, интервал остановлен! Кликать больше не будет!")
}
}, 1700);// Необходимо подобрать время интервала потому, что загрузка может длиться более 1700мс тогда отработает остановка, а кнопка подгрузится позже
Если касательно конкрететно автодока, то вот рабочий пример с MutationObserver. Скрипт при появлении кнопки "показать еще" нажимает её. Можете прям в браузере в консоли проверить.
document.querySelector('.center.ng-star-inserted .button-red.ng-star-inserted').click();
let target = document.querySelector('.product-items');
const config = {
childList: true,
subtree: true
};
const clickBtn = function(mutationsList, observer) {
for (let mutation of mutationsList) {
for(let node of mutation.addedNodes) {
if (node.className == 'button-red ng-star-inserted' ) node.click();
}
}
}
const observer = new MutationObserver(clickBtn);
observer.observe(target, config);