2011-06-29 5 views
3

divのinnerHTMLを変更すると、いくつかのMutationEvents、特にDOMCharacterDataModified、DOMSubtreeModified、およびDOMNodeInsertedをリッスンするこのフィドルを作成しました。DOMCharacterDataModifiedはFirefoxとChromeで一貫して起動しません。誰が正しいですか?

http://jsfiddle.net/newtang/kysTm/15/

興味深いことに、クロムを示しています。 DOMCharacterDataModified、DOMSubtreeModified

しばらくFirefoxの5ショー:DOMNodeInserted

私は正しい誰実際にはわかりません。私はこの古いMozillaバグを見つけました: https://bugzilla.mozilla.org/show_bug.cgi?id=368133とW3ドキュメント(http://www.w3.org/TR/DOM-Level-2-Events/events.html)ですが、特に啓発されていません。

誰でも正しい行動が分かっていますか?誰かにバグを報告したいので、一貫しています。

+0

回答に基づいてChromiumバグを提出しました:http://code.google.com/p/chromium/issues/detail?id=88195 – Newtang

+0

Webkitのバグを公開しました:https://bugs.webkit.org/ show_bug.cgi?id = 93787 – Newtang

答えて

2

Firefoxの動作が正しいようです。 innerHTMLを設定して、既存のtextNodeのcharacterDataを変更しないで、新しいtextNodeを挿入して既存のコンテンツを削除します(あなたの例でDOMNodeRemovedを観察すると、それも発生することがわかります)

実際にtextNodeのデータを変更するときの違いを参照してください:http://jsfiddle.net/doktormolle/yQu8v/

3

WebKitはinnerHTMLにマークアップを含まないものを設定し、設定しているノードの最初の子をa Textノードは、specを呼び出す(すべての子を削除し、新しいTextの子を作成する)のではなく、textnodeのテキストを直接変更します。したがって、突然変異イベントの違い。

+0

うわー、知っておきたい! +1 –

関連する問題