簡體   English   中英

變異觀察者無法檢測通過innerHTML,appendChild添加的節點

[英]Mutation Observer does not detect nodes added through innerHTML, appendChild

當我們嘗試使用appendChild或innerHTML在DOM中添加嵌套節點時,嵌套節點不會出現在突變的addNodes中。

初始HTML設置:

<html>
    <body>
        <div id="container">
        </div>
    </body>
</html>

這是我的突變觀察者代碼:

var observer = new MutationObserver(function(mutations) {
  for (var i = 0; i < mutations.length; i++) {
    var mutation = mutations[i];
    switch(mutation.type) {
      case 'childList':
        console.log(mutation.addedNodes);
      break;
      default:

    }
  }
});

observer.observe(document, {
    childList: true,
    subtree: true,
    attributes: true,
    characterData: true
});

如果我現在在div中使用嵌套的img節點執行appendChild,

var img = document.createElement('img');
img.setAttribute("src", "http://img.zohostatic.com/discussions/v1/images/defaultPhoto.png");
var div = document.createElement('div');
div.appendChild(img);
var container = document.getElementById("container");
container.appendChild(div);

Mutation Observer僅記錄附加到容器的div ,但不記錄img作為突變中的addNode。

這是一個工作的JSFiddle: https ://jsfiddle.net/aedhefhn/

有沒有解決方法?

那是預期的行為。 div是附加的所有元素,它剛好有一些孩子。 當然,您當然可以自己從.addedNodes遍歷其子節點。 .addedNodes只是一個節點數組,因此您可以遞歸遍歷每個項目以獲取所有子項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM