chdyiboke / weekly

issue and share weekly
5 stars 1 forks source link

Mutation Observer API:监视 DOM 变动 #43

Open liukexina opened 3 years ago

liukexina commented 3 years ago

Mutation Observer API 用来监视 DOM 变动。DOM 的任何变动,比如节点的增减、属性的变动、文本内容的变动,这个 API 都可以得到通知。

liukexina commented 3 years ago

Mutation Observer 有以下特点:

  1. 它等待所有脚本任务完成后,才会运行(即异步触发方式)
  2. 它把 DOM 变动记录封装成一个数组进行处理,而不是一条条个别处理 DOM 变动
  3. 它既可以观察 DOM 的所有类型变动,也可以指定只观察某一类变动。

使用方法:

let observer = new MutationObserver(function (mutations, observer) {
      // mutations  变动数组
      // observer  观察器实例
})
observer.observe(t, {
   childList: true
})

observe方法用来启动监听,observe方法接受两个参数,第一个是所要观察的DOM元素是article,第二个是所要观察的变动类型(子节点变动和属性变动) 观察器所能观察的 DOM 变动类型(即上面代码的options对象),有以下几种:

  1. childList:子节点的变动(指新增,删除或者更改)
  2. attributes:属性的变动
  3. characterData:节点内容或节点文本的变动
  4. ......

disconnect方法用来停止观察。调用该方法后,DOM 再发生变动,也不会触发观察器。

https://javascript.ruanyifeng.com/dom/mutationobserver.html#toc1