私はUIコンポーネントとして、いくつかの特別なタグを追跡する、例えば<色>、<日>とnullです(」観察するなど、いくつかのaddedNodesのためノーのparentNode(:。。本当の機能HTMLブロックのparentNodeは、そのような要素を作成し、DOMに挿入されたときに、私はそれを変換することができ、MutationObserver.observe(document.body
ここでのコードは、予想通りそれが正常に動作
function handleAddedNodes(nodes) {
[].forEach.call(nodes, function(node) {
if (!node.tagName)
return;
//how is it possible, node.parentNode is null?????
if (!node.parentNode) {
return;
}
});
}
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
handleAddedNodes(mutation.addedNodes);
});
});
observer.observe(document.body, {
childList : true,
subtree : true
});
document.bodyにaddedNodesを観察し、私も奇妙な問題を発見しましたdocument.bodyは」addedNodesは右、document.bodyの子孫でなければなりません意味?)
関数全体が大きなフロントエンドプロジェクトへのアドオンとして動作しますが、私はプロジェクトがDOMを変異させる方法がわからない、innerHTMLプロパティまたはのappendChild(ここでは、あまりにも多くのコード)がセット。機能を観察すると、イベントなどの非同期、機能なしのコールスタックであるとして、それはまた、デバッグすることができません。
だから私はちょうどこれを引き起こす可能性があることを知りたいし、
はjsFiddle
で再現することができればさらに良いと思っています。
まあ、要素がすぐにその後、追加している場合は、オブザーバ、MutationObserver
の注目要素に削除(次setImmediate
より速いがトリガされる)
どのようにすぐに(次のsetImmediateより速く)いくつかの要素が削除されましたか? – Andrew
@Andrewは申し訳ありません忙しかった、[OK]を、私は見 – megawac
更新を参照してください。ありがとう。 – Andrew