Как отследить загрузку popup окна, которое было открыто через window.open()?

Рейтинг: 0Ответов: 0Опубликовано: 27.06.2023

У меня есть web-страница что-то типо парсера. Она очень простая: всего лишь textarea и две кнопки. В textarea записываются некоторые номера из которых потом, при нажатии на одну из кнопок формируются ссылки. Далее эти ссылки вставляются во внутрь window.open() и открывается соответствующее окно, а уже из этого окна, с помощью расширения tampermonkey (расширение, которое позволяет запускать пользовательские скрипты на сайтах) собираются нужные данные и отправляются в бд. Код открытия страниц:

let popup;
const openPage = (i) => {
  let iter = i;
  const links = createlinks(); // получится массив ссылок
  if(iter === links.length){
    window.open('./excel.php');
  }
  if(iter >= links.length){
    return;
  }
  
  let waitPage = new Promise(function(resolve, reject){
    popup = window.open(links[iter]);
    
    setTimeout(function(){
      iter++;
      resolve(iter);
    }, 5000);
  });
  
  waitPage.then(res => {
    popup.close();
    openPage(iter); // Рекурсия, так как номеров в textarea лежит много
  });
}
Как видно из кода, новая страница открывается каждые пять секунд. Но проблема в том, что эта новая страница не всегда успевает загрузиться за эти секунды, следовательно tampermonkey не запускает свой скрипт и данные не парсятся. Я пробовал вешать на popup событие onload но почему, то обрабатывался только один номер, а дальше рекурсия сбрасывалась. Пробовал делать popup.document.addEventListener('DOMContentLoaded'), результат тот же самый. Вопрос - как можно реализовать эту логику,

Ответы

Ответов пока нет.