hugh 的个人博客

MutationObserver了解

1、简单demo

 简单demo

2、api

构造方法 得到 Observe对象

MutationObserver(
  function callback
);

callback回调对象的属性

type String 如果是属性发生变化,则返回attributes.如果是一个CharacterData节点发生变化,则返回characterData,如果是目标节点的某个子节点发生了变化,则返回childList.
target Node 返回此次变化影响到的节点,具体返回那种节点类型是根据type值的不同而不同的. 如果typeattributes,则返回发生变化的属性节点所在的元素节点,如果type值为characterData,则返回发生变化的这个characterData节点.如果typechildList,则返回发生变化的子节点的父节点.
addedNodes NodeList 返回被添加的节点,或者为null.
removedNodes NodeList 返回被删除的节点,或者为null.
previousSibling Node 返回被添加或被删除的节点的前一个兄弟节点,或者为null.
nextSibling Node 返回被添加或被删除的节点的后一个兄弟节点,或者为null.
attributeName String 返回变更属性的本地名称,或者为null.
attributeNamespace String 返回变更属性的命名空间,或者为null.
oldValue String

根据type值的不同,返回的值也会不同.如果type为 attributes,则返回该属性变化之前的属性值.如果type为characterData,则返回该节点变化之前的文本数据.如果type为childList,则返回null.

Observer对象 方法:

void observeNode target, optional MutationObserverInit options );
void disconnect();
Array takeRecords();

属性 Options

childList 如果需要观察目标节点的子节点(新增了某个子节点,或者移除了某个子节点),则设置为true.
attributes 如果需要观察目标节点的属性节点(新增或删除了某个属性,以及某个属性的属性值发生了变化),则设置为true.
characterData 如果目标节点为characterData节点(一种抽象接口,具体可以为文本节点,注释节点,以及处理指令节点)时,也要观察该节点的文本内容是否发生变化,则设置为true.
subtree 除了目标节点,如果还需要观察目标节点的所有后代节点(观察目标节点所包含的整棵DOM树上的上述三种节点变化),则设置为true.
attributeOldValue

attributes属性已经设为true的前提下,如果需要将发生变化的属性节点之前的属性值记录下来(记录到下面MutationRecord对象的oldValue属性中),则设置为true.

characterDataOldValue characterData属性已经设为true的前提下,如果需要将发生变化的characterData节点之前的文本内容记录下来(记录到下面MutationRecord对象的oldValue属性中),则设置为true.
attributeFilter 一个属性名数组(不需要指定命名空间),只有该数组中包含的属性名发生变化时才会被观察到,其他名称的属性发生变化后会被忽略.

 

 3、修改属性的demo

修改属性的demo


标题:MutationObserver了解
作者:hugh0524
地址:https://blog.uproject.cn/articles/2017/08/17/1502939973958.html