Js动态监听listen dom变化(支持WebView)并作出处理

本文介绍了如何利用MutationObserver接口动态监听DOM元素的变化,详细阐述了其实例方法,并提供了MDN官方API链接以供深入学习。
摘要由CSDN通过智能技术生成
// Firefox和Chrome早期版本中带有前缀
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver

// 选择目标节点
var target = document.querySelector('#some-id');
 
// 创建观察者对象
var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    console.log(mutation.type);
  });    
});
 
// 配置观察选项:
var config = { attributes: true, childList: true, characterData: true }
 
// 传入目标节点和观察选项
observer.observe(target, config);
 
// 随后,你还可以停止观察
observer.disconnect();

 

实例方法

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

MutationObserverInit

MutationObserverInit是一个用来配置观察者对象行为的对象,该对象可以拥有下面这些属性:

注:   childListattributes, 或者 characterData三个属性中必须至少有一个为 true.否则,会抛出异常"An invalid or illegal string was specified".
属性描述
childList如果需要观察目标节点的子节点(新增了某个子节点,或者移除了某个子节点),则设置为true.
attributes如果需要观察目标节点的属性节点(新增或删除了某个属性,以及某个属性的属性值发生了变化),则设置为true.
characterData如果目标节点为characterData节点(一种抽象接口,具体可以为文本节点,注释节点,以及处理指令节点)时,也要观察该节点的文本内容是否发生变化,则设置为true.
subtree除了目标节点,如果还需要观察目标节点的所有后代节点(观察目标节点所包含的整棵DOM树上的上述三种节点变化),则设置为true.
attributeOldValue

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

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

 

测试实例:

// Chrom  Console 监听 title变化
new MutationObserver(function(mutations) {
    console.log(document.title);
    mutations.forEach(function(mutation) {
        console.log(mutation.type);
    });
}).observe(document.querySelector('title'), { attributes: true, childList: true, characterData: true });

// 每当title节点变化,console以下结果
// 焦点之中的万能险:资金错配与被动加杠杆(标题)
// childList(mutation.type)

 

 

api:https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值