2010-12-26 6 views
4

Facebookページの上に「オーバーレイされた」JavaScriptスクリプトを作成しようとしています。それはDOMContentLoadedを使ってコンテンツがロードされたことを検出してから追加のものを追加します。しかし、Facebookは実際にはAJAXを使う新しいページに行くときにページを実際に "リロード"しないので、DOMContentLoadedハンドラは実行されません見ていく新しいものがあっても、もう一度。DOMNodeInsertedまたはhashchange

とにかくFacebookのハッシュを変更するためにFacebookがonhashchangeを使用していると思ったが、Firefox 4(Firefox 3以降でこれをサポートする必要があるが他のブラウザはサポートしていない)これ以上ハッシュを変更しないでください。そして、Firefox 3.6以前では、オンハッチ変更はありません。

私はDOMNodeInsertedを使うことを考えましたが、それは本当にページを遅くするでしょうか? (私は本当にこのスクリプトで減速することはできません。)

+0

は誰がDOMNodeInsertedを実装しようとしましたか?スピード/応答性が問題でしたか? (私はかなり大きなコールバック関数を持っています) – jakey

答えて

1

軽量ページの場合、一般的に顕著な効果はありません。しかし、大量のページ(私はgmailでこれを試しました)では、メッセージがスムーズに構成されないということは本当に遅いです。そしてそのイベントは、その中にただ一つのリンクを持っていた非常に単純なスパン要素に追加されました。 DOMNodeInsertedやDOMSubTreeModifiedのようなイベントは、実際のショーストッパーです。

UPDATE:これらのメソッドDOMNodeInserted(またはDOMSubtreeModified)には実際にはパフォーマンスの問題があることに注意してください。新しいECMA仕様によれば、これははるかに高速なリスナーです。同じことをするためのMutationObserver (もっと)。

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

関連する問題