zoukankan      html  css  js  c++  java
  • JS

    在线预览

    使用《Web API 接口》的《MutationObserver》
    MutationObserver

    网上查到的很多都是使用 Mutation events 的,但在 MDN 上一查这个事件已经废弃了,并且推荐用 MutationObserver 替换掉

    Deprecated
    This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Avoid using it and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

    Mutation events provide a mechanism for a web page or an extension to get notified about changes made to the DOM. Use Mutation Observers instead if possible.

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <title>Document</title>
      </head>
      <body>
        <h1>下述方法也可以监听使用《谷歌页面翻译》时的DOM变化</h1>
        <h1>
          The following way also can catch changes of DOM when using
          <em>Google page translation</em>
        </h1>
        <h3>使用MutationObserver(Using MutationObserver)</h3>
        <div id="hello"><span>Hello</span> <em>Mr.</em> Word!</div>
        <button onclick="addNode()">添加(add DOM)</button>
        <script>
          // Select the node that will be observed for mutations
          var targetNode = document.querySelector("body");
    
          // Options for the observer (which mutations to observe)
          // subtree:是否监听子节点的变化
          var config = { attributes: true, childList: true, subtree: true };
    
          // Callback function to execute when mutations are observed
          var callback = function(mutationsList) {
            for (var mutation of mutationsList) {
              console.log(mutation);
              if (mutation.type == "childList") {
                console.log("A child node has been added or removed.");
              } else if (mutation.type == "attributes") {
                console.log(
                  "The " + mutation.attributeName + " attribute was modified."
                );
              }
            }
          };
    
          // Create an observer instance linked to the callback function
          var observer = new MutationObserver(callback);
    
          // Start observing the target node for configured mutations
          observer.observe(targetNode, config);
    
          // // Later, you can stop observing
          // observer.disconnect();
    
          var addNode = function() {
            var divnode = document.createElement("div");
            var textNode = document.createTextNode("Hello world!");
            divnode.appendChild(textNode);
            document.getElementById("hello").appendChild(divnode);
          };
        </script>
      </body>
    </html>
    
  • 相关阅读:
    PHP7.X 安装mysql扩展
    雷军说云计算是下一个风口
    玩转超级列表框4 拖放组建的使用。
    玩转超级列表框第三课的自编代码
    易语言核心支持库 文本操作与文件读写
    插入表项的标题和置标题的标题的区别
    精易模块8.2 类_超级列表框 外部超级列表框的区别和使用注意点
    如何理解动态规划
    雷军:互联网思维本质上就是群众路线
    纯互联网项目“失宠”乐博资本杨宁称今后只投O2O
  • 原文地址:https://www.cnblogs.com/jffun-blog/p/11255097.html
Copyright © 2011-2022 走看看