@Bestolkovy

Как дождаться появления определённого контейнера на странице?

Здравствуйте!

Пишу небольшой парсер для себя (Userscript). Нужно отследить появление на странице появление контейнера с содержимым и как только он появился (а не вся страница загрузилась), занести содержимое в переменную и тут же полностью прекратить загрузку страницы.

Пока, делаю так:

// Ждём полной загрузки страницы.
window.jQuery( document ).ready( function( $ ) {

    // Через две секунды запускаем нашу функцию (потому что некоторые его скрипты, запускаются через секунду после загрузки сайта, не знаю как это блокировать).
    setTimeout( function () {

        // Создаём переменную «element», в пределах видимости окна. Что-то вроде «глобальной».
        window.content = $( '.j-e-text' )[0].outerHTML;

        // Останавливаем выполнение всех скриптов на странице.
        window.stop();

        // Удаляем элемент html.
        $( 'html' ).remove();

        /* Далее, создаём свою HTML-конструкцию. */

    }, 2000 );

});


Но, всё это жутко медленно, его сайт просто перегружен скриптами и надо ждать по 30 секунд пока он весь загрузится. А нужно получить только содержимое контейнера $( '.j-e-text' ) в переменную и полностью остановить дальнейшую работу сайта (загрузку скриптов и т. д.).

* * *

Вопрос номер два к профессионалам, можно ли вообще ничего не отображать на экране до момента пока содержимое не будет помещено в переменную? Пока я сам не начну работать с содержимым переменной?

Спасибо!
  • Вопрос задан
  • 493 просмотра
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1.
А нужно получить только содержимое контейнера $( '.j-e-text' ) в переменную и полностью остановить дальнейшую работу сайта (загрузку скриптов и т. д.).
1.1 Если данные приходят сразу, можно обычным парсингом и последующим закрытием соединения (т.е. без запуска JS).
1.2 stackoverflow.com/questions/550574/how-to-terminat...
и закройте все активные соединения в этом потоке, чтобы предотвратить дальнейшее получение данных по сети.
2. "Не отображать" - стиль задайте классу: display:none
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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