Задать вопрос
HSGOD
@HSGOD
c#

Как исправить скрипт tampermonkey, чтобы при открытии новой вкладки собирать данные?

Уже какой день маюсь с вопросом:
1й вариант: Скрипт срабатывает на определённой странице при её обновлении - правильно собирает данные;
2й вариант(КОТОРЫЙ МНЕ НУЖЕН): Скрипт должен открывать новую вкладку и собирать на ней данные, но вместо 2х значений он находит 42 и так далее, чтобы я не делал - ничего не помогает
Из последнего пришло в голову после перехода и подгруза страницы обновлять её, но тоже все идет не так

function visitLinksSequentially(links, newTab) {
        let index = 0;
        function visitNextLink() {
            if (index < links.length) {
                const link = links[index];
                index++;
                newTab.location.href = link;
Здесь мне нужно подождать ПОЛНУЮ загрузку страницы и только потом приступать к сборке
                waitForDOMReady(() => {
                    setTimeout(() => {
                        ТУТ ПЕРЕМЕННАЯ ДЛЯ ИЗВЛЕЧЕНИЯ ДАННЫХ();
                    }, 200);
                });
                newTab.addEventListener('load', visitNextLink);
            } else {
                newTab.close(); 
            }
        }
        visitNextLink();
    }
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
function visitLinksSequentially(links) {
    let index = 0;

    function waitForPageLoad(newTab, callback) {
        // ждем полную загрузку
        newTab.addEventListener('load', function onLoad() {
            newTab.removeEventListener('load', onLoad); 
            callback(); 
        });
    }

    function extractData(newTab, callback) {
        // логика для извлечения данных
        const extractedData = newTab.document.querySelectorAll('SELECTOR_YOUR_DATA'); 
        console.log('Извлечённые данные:', extractedData); 
        callback(); 
    }

    function visitNextLink() {
        if (index < links.length) {
            const link = links[index];
            index++;
            const newTab = window.open(); // открыли новую вкладку

            newTab.location.href = link;

            waitForPageLoad(newTab, () => {
                setTimeout(() => {
                    extractData(newTab, () => {
                        newTab.close(); // закрыли
                        visitNextLink(); // пошли дальше
                    });
                }, 1000); 
            });
        } else {
            console.log('Good job bro!');
        }
    }

    visitNextLink();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы