Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт отписки в Инста. Нужна функция при повторном появление окна отписки (https://javascript.ru/forum/misc/74392-skript-otpiski-v-insta-nuzhna-funkciya-pri-povtornom-poyavlenie-okna-otpiski.html)

classicus 06.07.2018 15:53

Скрипт отписки в Инста. Нужна функция при повторном появление окна отписки
 
Привет друзья. Подскажите что добавить, при повторном появлении окна отписки в инстаграм.
Пользуюсь вот этим скриптом:
Element.prototype.parents = function(selector) {
  var elements = [];
  var elem = this;
  var ishaveselector = selector !== undefined;
 
  while ((elem = elem.parentElement) !== null) {
    if (elem.nodeType !== Node.ELEMENT_NODE) {
      continue;
    }
 
    if (!ishaveselector || elem.matches(selector)) {
      elements.push(elem);
    }
  }
 
  return elements;
};
 
 
console.info('Открыли список подписок');
document.querySelector('a[href*="following"]').dispatchEvent(
  new MouseEvent('click', {bubbles: true, cancelable: true})
);
 
 
setTimeout(function() {
  var timeout = 45; // seconds
 
  console.warn(
    'Скрипт начал работу: первая и последующие отписки будут через '
    + timeout + ' секунд'
  );
 
  function clickToButtonUnsubscribe(selectorButtons, $ulWrapper, iteration) {
    iteration = typeof(iteration) === 'number' ? iteration : 1;
 
    var $button = document.querySelector(selectorButtons);
 
    if ($button) {
      setTimeout(function() {
        $button.dispatchEvent(
          new MouseEvent('click', {bubbles: true, cancelable: true})
        );
 
        var tmpScrollTop = $ulWrapper.scrollTop;
        $ulWrapper.scrollTop = $ulWrapper.scrollTop + $ulWrapper.scrollHeight;
        setTimeout(function() { $ulWrapper.scrollTop = tmpScrollTop; }, 100);
 
        console.info(
          'Кликнул по кнопке №' + iteration + ' и проскролил список',
          {
            datetime: new Date(),
            $button,
            $ulWrapper
          }
        );
       
        clickToButtonUnsubscribe(selectorButtons, $ulWrapper, iteration + 1);
      }, timeout * 1000);
    } else {
      console.warn('Скрипт завершил работу: нет кнопоки для отписки');
    }
  }
 
  clickToButtonUnsubscribe(
    'button._5f5mN.-fzfL.KUBKM.yZn4P', // selector of buttons for unsubscribe
    document.querySelector('div.j6cq2') // selector for wrapper of ul-tag
  );
}, 2000);


Вставляю в консоль Хрома.

Но на некоторых аккаунтах появляется ещё одно окно отписки:




код окна следующий:
<div class="pbNvD fPMEg " role="dialog"><button aria-hidden="true" class="g0AG9" tabindex="-1"></button><div class="piCib"><div class="dsJ8D"><div class="xlTJg"><div class="G3yoz"><img src="https://scontent-arn2-1.cdninstagram.com/vp/869c5046d91f0584aacd07ee72b793a3/5BD4B25A/t51.2885-19/s150x150/35259174_1025780487591057_6467851780020502528_n.jpg?efg=eyJ1cmxnZW4iOiJ1cmxnZW5fZnJvbV9pZyJ9" width="90" height="90" alt="User avatar"></div></div></div><div class="_08v79"><div class="_5awHz  YHqnk">Отменить подписку на @maked_mc?</div></div><div class="mt3GC"><button class="aOOlW -Cab_   " tabindex="0">Отменить подписку</button><button class="aOOlW   HoLwm " tabindex="0">Отмена</button></div></div></div>


Код писал не сам взял где-то из инета ))) сам в этой теме не силён. Попробовал сам, всё мимо )))


Часовой пояс GMT +3, время: 11:48.