DOMNodeInserted или hashchange - PullRequest
       3

DOMNodeInserted или hashchange

4 голосов
/ 27 декабря 2010

Я пытаюсь написать скрипт JavaScript, который «накладывается» поверх страницы Facebook. Он использует DOMContentLoaded для определения, когда загружается контент, а затем добавляет некоторые дополнительные материалы. Однако, поскольку Facebook фактически не «перезагружает» страницу при переходе на новую страницу (она просто использует AJAX), обработчик DOMContentLoaded не запускается опять же, несмотря на то, что есть новые вещи для просмотра.

В любом случае, чтобы обнаружить это изменение, я подумал об использовании onhashchange, так как Facebook использовал для изменения хэша страницы, но в Firefox 4 (мне нужно поддерживать Firefox 3 и более поздние версии с этим, но без других браузеров), Facebook не делает измените хэш больше, и в pre-Firefox 3.6 нет onhashchange.

Я думал об использовании DOMNodeInserted, но действительно ли это замедлит страницу? (У меня действительно не может быть никаких замедлений в этом сценарии.)

Ответы [ 2 ]

1 голос
/ 22 января 2011

Вы можете захотеть отслеживать объект windows.history, см. Следующий ответ о том, как Facebook использует его для обновления страниц: «Перенаправление» страницы без обновления (стиль фотографий Facebook)

1 голос
/ 30 декабря 2010

Для легких страниц это обычно не имеет заметного эффекта.Однако на громоздких страницах (я пробовал это в gmail) это действительно очень медленно, что я даже не могу написать сообщение плавно.И это событие было добавлено к очень простому элементу span, в котором была только одна ссылка.Такие события, как DOMNodeInserted и DOMSubTreeModified, являются реальными ограничителями шоу.

ОБНОВЛЕНИЕ: Для всех тех, кто пытается найти ответ на этот вопрос, обратите внимание, что эти методы DOMNodeInserted (или DOMSubtreeModified) действительно имели проблемы с производительностью, поэтому согласно новым спецификациям ECMA это намного более быстрый слушатель: MutationObserver для выполнениято же самое (и больше).

https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/

...