2012-06-06 3 views
2

Я разрабатываю плагин Chrome. Он вводит имя класса для каждого тега.Javascript: как проверить, загружены ли данные

У меня возникли проблемы с веб-страницами, такими как facebook, в которых содержимое загружается после прокрутки вниз.

Я хотел бы узнать, есть ли способ проверить, загружен ли новый контент.

К настоящему времени единственным решением, я мог бы найти это

setInterval(function() { 

Спасибо.

ответ

2

Существует DOMSubtreeModified событие (source), которое поддерживает Chrome - см. this answer. Ваш код должен выглядеть следующим образом:

document.addEventListener('DOMSubtreeModified', function() { 
    $("*:not(.my_class)").addClass('my_class'); 
}, true); 
+0

Благодаря @kdzwinel , он действительно работает. Я использую «DOMNodeInserted». Единственное, что у меня такое впечатление, что это замедляет загрузку, но я не уверен. Считаете ли вы возможным? – lorussian

+0

Обязательно запустите свой сценарий в конце документа (или, если возможно, даже с некоторой задержкой времени ожидания после полной загрузки документа), вероятно, что 'DOMSubtreeModified' запускается несколько раз, когда DOM создается впервые, и когда Facebook загружает и создает страницу с помощью нескольких вызовов AJAX. Вообще говоря, ваше расширение будет довольно тяжелым на тяжелых веб-сайтах javascript и веб-приложениях. –

1

Как Konrad Dzwinel сказал, вы можете использовать некоторые Mutation Event слушатель

document.addEventListener("DOMSubtreeModified", methodToRun); 

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

Если вы хотите это для расширения Chrome, вы можете использовать новый и блестящий Mutation Observers от DOM Level 4 (следуйте по ссылкам там, они объясняют много!). Где DOMSubtreeModified уволили тысячу раз, MutationObserver срабатывает только один раз со всеми внесенными изменениями и доступными.

Работы по (по состоянию на 2012/06):

  • Chrome 18+ (префиксами, window.WebKitMutationObserver)
  • Firefox 14+ (без префикса)
  • WebKit nightlies
Смежные вопросы