Как узнать повяление такого сообщения на странице ?
Хочу в корзине на 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! В прошлый раз не получилось с ним, надеюсь в этот раз получится. |
пока готовый рабочий скрипт
Код:
// ==UserScript== |
Вот рабочее расширение для хрома:
Файл manifest.json
{
"manifest_version": 2,
"name": "Aliexpress",
"description": "Чистка корзины",
"author": "selevo",
"version": "1.0.1",
"icons": {
"16": "img/16.png",
"48": "img/48.png",
"128": "img/128.png"
},
"content_scripts": [
{
"matches": [
"https://shoppingcart.aliexpress.ru/shopcart/shopcartDetail.htm*",
"https://shoppingcart.aliexpress.com/shopcart/shopcartDetail.htm*"
],
"js": ["script.js"],
"run_at": "document_idle"
}
]
}
Файл script.js
var mutationObserver = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if(mutation.oldValue == 'next-dialog next-closeable next-overlay-inner fadeInDown') {
let btnOK = document.querySelector('button.next-btn.next-btn-primary.next-dialog-btn');
btnOK.click();
}
});
});
mutationObserver.observe(document.documentElement, {
attributes: true,
characterData: true,
childList: true,
subtree: true,
attributeOldValue: true,
characterDataOldValue: true
});
+ добавить папку img в ней 3 файла: 16.png 48.png 128.png Рабочее расширение готовое к установке в режиме разработчика. Протестил - удаляет товары из корзины без подтверждения. |
| Часовой пояс GMT +3, время: 10:25. |