2011-07-12 5 views
0

Я пытаюсь сделать простую расширение Google Chrome - например, найти определенный элемент на странице и отобразить предупреждение.Проверка элемента DOM в Google Chrome Extension

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

Как сделать мой чек только после загрузки всей страницы?

Я пробовал "run_at" : "document_idle" в файле манифеста, но безуспешно. Он показывает мне сообщение до загрузки всей страницы.

Я думал проверять каждую секунду (или что-то) все элементы DOM, но является ли это приемлемым решением? Я думаю, что это замедлит страницу ...

Спасибо.

ответ

1

Если этот элемент не существует на странице при нажатии кнопки «источник вида», то один из способов ловли он будет слушать DOMSubtreeModified событие, которое выстреливает каждый раз, когда DOM модифицируется:

document.addEventListener("DOMSubtreeModified", function(event){ 
     if(document.getElementById("my_element")) { 
       //element is added 
     } 
}); 
+0

Спасибо за информацию. Моя страница загружает множество элементов с помощью AJAX. Так что это действительно замедляет мою страницу. Для каждого добавленного элемента выполняется сценарий. Могу ли я ограничить это, допустим, только при добавлении элемента (div, текстовое поле, ...)? – CristiC

+0

@Parkyprg Существует также событие DOMNodeInserted. Но я не понимаю, почему это замедляет страницу. Вы не должны запускать скрипт внутри этого обработчика событий, просто проверьте, нет ли элемента на странице или нет. Если это так, вы запускаете свой скрипт один раз (есть флаг или что-то еще). – serg

1

Вы пытались поместить свой код в событие window.onload в "content_script.js"?

window.onload = function() { 
    // your code 
}; 
+0

Yep: http://stackoverflow.com/questions/3698200/window-onload-vs-document-ready – Darin

+1

Это не работает. Это срабатывает при загрузке окна, но до того, как все элементы будут обновлены с помощью AJAX. – CristiC

Смежные вопросы