Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2020, 10:59
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 132

Как узнать повяление такого сообщения на странице ?
Хочу в корзине на 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();
        }

};


он код кнопки обнаруживает, но даже когда это окно не появляется на экране.
В любом место экрана кликаю мышкой и сообщает что кнопка обнаружена.
Не пойму почему.

Последний раз редактировалось selevo, 22.04.2020 в 12:29.
Ответить с цитированием
  #2 (permalink)  
Старый 22.04.2020, 12:18
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от selevo Посмотреть сообщение

он код кнопки обнаруживает, но даже когда это окно не появляется на экране.
В любом место экрана кликаю мышкой и сообщает что кнопка обнаружена.
Не пойму почему.
Может обнаруживать, когда кнопка есть, но просто не видима.
Когда она сама или какой то ее родительский блок имеет display:none.
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2020, 13:00
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 132

Я думаю это оверлейный вывод сообщения.
Как отследить что появилось оверлейное окно ?
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2020, 13:01
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 132

Сообщение от voraa Посмотреть сообщение
Может обнаруживать, когда кнопка есть, но просто не видима.
Когда она сама или какой то ее родительский блок имеет display:none.
А что мне с ней делать когда она нивидима ?
у меня и сейчас так определяет наличие кнопки когда она невидима, даже ничего делать не пришлось ))
Мне надо наоборот когда видима.
Ответить с цитированием
  #5 (permalink)  
Старый 22.04.2020, 13:07
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Проверять offsetWidth кнопки. Когда видима, offsetWidth будет не равно 0
Ответить с цитированием
  #6 (permalink)  
Старый 22.04.2020, 17:15
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 132

Сообщение от voraa Посмотреть сообщение
Проверять 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');



       }
      }

Последний раз редактировалось selevo, 22.04.2020 в 17:17.
Ответить с цитированием
  #7 (permalink)  
Старый 22.04.2020, 17:26
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

if ((document.querySelector(korzinaDelOKid).offsetWid th)!=0); //Проверка есть ли кнопка подтверждения удаления из корзины

Что означает эта ; ?
Ответить с цитированием
  #8 (permalink)  
Старый 22.04.2020, 19:39
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от selevo
Как отследить что появилось оверлейное окно ?
Есть такая штука - MutationObserver

Вот накидал:
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 не срабатывает. А так логи расставил - обнаружение срабатывает правильно.
Ответить с цитированием
  #9 (permalink)  
Старый 22.04.2020, 20:55
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 132

voraa,
о,вот косяк )))
Но непомогло...
Ответить с цитированием
  #10 (permalink)  
Старый 22.04.2020, 20:56
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 132

MC-XOBAHCK,

cпасибо, давно хотел заняться MutationObserver!
В прошлый раз не получилось с ним, надеюсь в этот раз получится.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как мне узнать почту wepogar Оффтопик 11 21.06.2018 12:58
Как узнать значение SpiriKoN jQuery 7 12.11.2014 20:36
Как узнать какой скрипт вызывается при клике по эленету (если это прямо не прописано) Dmitriy Komar Events/DOM/Window 4 08.12.2011 17:21
Как узнать подключен ли JavaScript у пользователя? frost18 Элементы интерфейса 1 26.10.2011 17:16
Как узнать размер загружаемого файла? shkarbatov Серверные языки и технологии 5 14.08.2011 17:12