DOM规范中添加了MutainObserver接口
MutainObserver接口的实例是通过MutainObserver构造函数并传入一个回调函数来创建
let observer = new MutainObserver((params) => {
}) //回调函数接收一个参数
MutainObserver实例不会关联DOM任何部分。是让MutainObserver实例的observer方法绑定dom操作。
let observer = new MutainObserver((params) => {
}) //回调函数接收一个参数
observer.observer(document.body,{attributes:true})
上述例子表示bodu元素上任何属性法发生变化都会被MutainOberver实例发现,然后一步执行注册回调的方法。body后代元素的属性修改不会被监控到,所以就不会触发回调方法
回调函数拥有一个参数,参数为一个数组,数组中的内容为
其中单个元素的属性意思如下
target:被修改影响的目标节点
type:字符串。表示变化的类型
oldValue:如果MutainObserverInit对象中启用,attributeOld 或者characterData oldValue 为true,那么保存的值为原生值 childList类型为null
attributeName:对应类型attribute类型变化,保存被修改属性的名字
addNodees:对于childList类型变化,返回包含变化中添加的节点
removeNodees:对于childList类型变化,返回删除的节点
previousSibling:对于childList类型变化,变化节点的前一个同胞节点
nextSibling:对于childList类型变化,变化节点的后一个同胞节点
可以创建监控DOM,也可以取消监控disconnect.disconnect表示断开监控,而不是删除监控,断开的监控可以重新连接
MutainObserver观察的范围
subtree:布尔值,表示是否观察子节点
attributes:布尔值,表示是否观察目标节点的属性变化
attributeFilter:字符串数组,表示要观察哪个属性变化
attributeOldValue:布尔值 表示是否记录变化之前的值
characterData:布尔值 表示修改字符数据触发事件
characterDataOldVlaue:布尔值 是否保存之前字节变化的值
childList:目标节点是否触发变化事件
MutainObserver :如果观察的数据变化多次,那么回调函数也会触发多次