美文网首页
MutationObserver

MutationObserver

作者: 凝黛色 | 来源:发表于2019-03-26 19:23 被阅读0次

MutationObserver 是一个可以监听DOM结构变化的接口。

官方使用方式示例

//选择一个需要观察的节点
var targetNode = document.getElementById('some-id');

// 设置observer的配置选项
var config = { attributes: true, childList: true, subtree: true };

// 当节点发生变化时的需要执行的函数
var callback = function(mutationsList, observer) {
    for(var mutation of mutationsList) {
        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.');
        }
    }
};

// 创建一个observer示例与回调函数相关联
var observer = new MutationObserver(callback);

//使用配置文件对目标节点进行观测
observer.observe(targetNode, config);

// 停止观测
observer.disconnect();

示例引用链接 https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

使用方式详解

<!DOCTYPE html>

<div id="opop">
    <div class="op"></div>
    <div class="op"></div>
    <div class="op op-node-change"></div>
</div>
<!--引用jqery-->
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
<script>

    var targetNode =document.getElementById('opop');

    var observer = new MutationObserver(function(mutations) {
        var $node = $('#opop .op:not(.op-node-change)');
        $node.addClass('op-node-change test');
        console.log(111111);
    });

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

</script>

上述代码是一个简单的应用示例, 是在id="opop"下,给所有的没有"op-node-change"的div 增加类"op-node-change test"
这段代码直接运行后的显示


可以看到div 的类名并没有发生改变。此时,在Console中动态的增加新的节点



然后可以看到div 的类名发生了我们所期待的变化。

这是因为MutationObserver是监听DOM树变化的接口,一开始的时候后div先加载,然后是js加载,此时DOM树没有发生变化,所有MutationObserver的回调函数没有执行,当我们动态的改变DOM树的结构时,MutationObserver监听到了变化,所以回调函数起了作用。这就是我们最后看到的结果。

相关文章

  • dom 修改 更新

    MutationObserver MutationObserver[https://developer.mozil...

  • MutationObserver是什么?

    目录 MutationObserver概览 MutationObserver构造器 MutationObserve...

  • 不“知名”API大集合

    MutationObserver MutationObserver 是一个可以监听DOM结构变化的接口。 Muta...

  • MutationObserver

    链接:https://www.jianshu.com/p/90f042c9e42f作者:凝黛色 MutationO...

  • MutationObserver

    MutationObserver 是一个可以监听DOM结构变化的接口。 官方使用方式示例 示例引用链接 https...

  • MutationObserver

    用于监视DOM树的变更,可兼容到IE11其监听回调属于微任务

  • MutationObserver

    今天在看vue源码nextTick实现部分发现如下代码 判断可用MutationObserver的情况下赋予tim...

  • js之MutationObserver

    百度搜索 mdn MutationObserver

  • MutationObserver、IntersectionObs

    MutationObserver用于监控DOM节点的变化,如 属性变化、子节点增删改、子树的变化等 Interse...

  • MutationObserver用法

    Mutation Observer API 用来监视 DOM 变动。比如节点的增减、属性的变动、文本内容的变动。 ...

网友评论

      本文标题:MutationObserver

      本文链接:https://www.haomeiwen.com/subject/uaunvqtx.html