Как узнать повяление такого сообщения на странице ?
Хочу в корзине на aliexpress автоматически нажимать ОК при удалении товара. :)
Надоело каждый раз кликать подтверждение удаления. Спасибо. gif ролик https://psv4.userapi.com/c856320/u47...9Tx2_NJRU5Ss5A Сейчас у меня такой код var korzinaDelOKid = ("body > div.next-overlay-wrapper.opened > div.next-dialog.next-closeable.next-overlay-inner > div.next-dialog-footer.next-align-left > button.next-btn.next-medium.next-btn-primary.next-dialog-btn"); // Ожидание клика if (1) {document.body.onclick = function(e) { console.log('СТАРТ ОБРАБОТКИ КЛИКА\n'); setTimeout(ClikOKdelete, 200); // задержка 200 милисекунд и запуск опроса наличия кнопки // alert ('click'); } } function ClikOKdelete (){ if (document.querySelector (korzinaDelOKid)); //Проверка есть ли элемент кнопки подтверждения удаления из корзины { console.log('Кнопка ОК подтверждения удаления обнаруженаы\n'); // document.querySelector (korzinaDelOKid).click(); } }; он код кнопки обнаруживает, но даже когда это окно не появляется на экране. В любом место экрана кликаю мышкой и сообщает что кнопка обнаружена. Не пойму почему. |
Цитата:
Когда она сама или какой то ее родительский блок имеет display:none. |
Я думаю это оверлейный вывод сообщения.
Как отследить что появилось оверлейное окно ? |
Цитата:
у меня и сейчас так определяет наличие кнопки когда она невидима, даже ничего делать не пришлось )) Мне надо наоборот когда видима. |
Проверять offsetWidth кнопки. Когда видима, offsetWidth будет не равно 0
|
Цитата:
if ((document.querySelector(korzinaDelOKid).offsetWidth)!=0); //Проверка есть ли кнопка подтверждения удаления из корзины условие проходит проверку даже если окна нет. а вывод в консоль собщает Cannot read property 'offsetWidth' of null Но если окно есть то выдает размер. Но почему условие проходит если условие 'offsetWidth' of null Не понятно... var korzinaDelOKid = ("body > div.next-overlay-wrapper.opened > div.next-dialog.next-closeable.next-overlay-inner > div.next-dialog-footer.next-align-left > button.next-btn.next-medium.next-btn-primary.next-dialog-btn"); function ClikOKdelete () { if ((document.querySelector(korzinaDelOKid).offsetWidth)!=0); //Проверка есть ли кнопка подтверждения удаления из корзины { console.log('Кнопка ОК подтверждения удаления обнаруженаы\n'); console.log(document.querySelector (korzinaDelOKid).offsetWidth); // document.querySelector (korzinaDelOKid).click(); } } // Ожидание клика if (1) {document.body.onclick = function(e) { console.log('СТАРТ ОБРАБОТКИ КЛИКА\n'); setTimeout(ClikOKdelete, 200); // задержка 200 милисекунд и запуск опроса наличия кнопки // alert ('click'); } } |
if ((document.querySelector(korzinaDelOKid).offsetWid th)!=0); //Проверка есть ли кнопка подтверждения удаления из корзины
Что означает эта ; ? |
Цитата:
Вот накидал: function clikOKdelete() { console.log('Появилось окно'); let btnOK = document.querySelector('button.next-btn.next-btn-primary.next-dialog-btn'); console.log(btnOK); let eventClick = new Event('click'); btnOK.dispatchEvent(eventClick); } var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if(mutation.oldValue == 'next-dialog next-closeable next-overlay-inner fadeInDown') { clikOKdelete(); } }); }); mutationObserver.observe(document.documentElement, { attributes: true, characterData: true, childList: true, subtree: true, attributeOldValue: true, characterDataOldValue: true }); Не пойму почему событие клика из dispatchEvent не срабатывает. А так логи расставил - обнаружение срабатывает правильно. |
voraa,
о,вот косяк ))) Но непомогло... |
MC-XOBAHCK,
cпасибо, давно хотел заняться MutationObserver! В прошлый раз не получилось с ним, надеюсь в этот раз получится. |
Часовой пояс GMT +3, время: 23:30. |