html DOM 变化 通知,很好很强大
刚做一个项目,某个div标签显示后 需要接收一个事件,用于主动调用 window.resize();
从网上找了了,发现 MutationObserver。给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力。
测试代码如下。保存成html文件即可运行
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ask.csdn.net/js/jquery-1.11.1.min.js"></script>
</head>
<body>
<div>
<input type="button" value="Test" onclick="test()"/>
</div> <div id="divTest" style="display:none;height:300px;width:300px;background-color:yellow"> observer.observe(target, config);
</div>
<script>
function test() {
$('#divTest').css("display", "block");
}
$(function () {
// Firefox和Chrome早期版本中带有前缀
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver // 选择目标节点
var target = document.getElementById('divTest'); // 创建观察者对象
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
alert(mutation.type);
});
}); // 配置观察选项:
var config = { attributes: true, childList: true, characterData: true } // 传入目标节点和观察选项
observer.observe(target, config); // 随后,你还可以停止观察
//observer.disconnect();
});
</script>
</body>
</html>
在实际用的过程中 这一步 observer.observe(target, config);报了下面的错误
Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'.
原来是 我用的jquery选择器,$("#divTest"),这样出来的结果是数据
而observer.observe(target, config);方法需要的是一个节点。
相关:
http://www.cnblogs.com/snandy/archive/2016/04/10/5362824.html
https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver
html DOM 变化 通知,很好很强大的更多相关文章
- How Javascript works (Javascript工作原理) (十) 使用 MutationObserver 监测 DOM 变化
个人总结: 这篇文章介绍了几种监测DOM变化的方法,重点介绍的是一个新浏览器API叫做MutationObserver. 注意:不要和Vue.js种 Object.defineProperty() 的 ...
- JavaScript 工作原理之十-使用 MutationObserver 监测 DOM 变化
原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第十章. 网络 ...
- js动态监听dom变化
原生js 动态监听dom变化,根据不同的类型绑定不同的处理逻辑 // Firefox和Chrome早期版本中带有前缀 var MutationObserver = window.MutationO ...
- Javascript高级编程学习笔记(49)—— DOM2和DOM3(1)DOM变化
DOM变化 我们知道DOM有许多的版本,其中DOM0和DOM2这两个级别以对事件的纳入标准而为人所知 但是呢,这里不讲事件,在后面会有专门和事件有关的部分作为详细讲解 这里就只讲一下DOM2和DOM3 ...
- MutationObserver DOM变化的观察
简单的给MutationObserver做个测试及总结笔记. MutationObserver,window上的一个(构造)函数,可以通过其创建的观察者(观察对象)达到观察DOM的变化的效果. 可适用 ...
- 强大的DOM变化观察者MutationObserver
在这之前 DOM3 提供了 Mutation events 事件 DOMAttrModified DOMAttributeNameChanged DOMCharacterDataModified DO ...
- Redis 数据变化通知服务实践
从Redis 2.8.0版本起,Redis加入了“Keyspace notifications”(即“键空间通知”)的功能.键空间通知,允许Redis客户端从“发布/订阅”通道中建立订阅关系,以便客户 ...
- WPF 普通属性变化通知
问题描述:使用ObservableCollection<OrderItem> source 给Datagrid.ItemsSource赋值,在后台更新source集合后,前台Datagri ...
- WPF绑定之索引器值变化通知
背景 在某些应用中,需要在界面上绑定到索引器,并在值发生变化时实时更新. 解决方案 只要将包含索引器的类实现INotifyPropertyChanged接口,并在索引值更改时引发PropertyCha ...
随机推荐
- VPS之openVPN的安装配置
原文地址:http://www.blogjava.net/dongbule/archive/2010/11/01/336714.html 上次写的<VPS的购买和使用>中提到了openVP ...
- c# asp.net 鼠标改变控件坐标位置,更改控件坐标,注册表保存读取,打印,查找局域网内打印机等等收集
界面虽然被我弄的很难看,但功能还可以 里边注册表的路径自己设置一下,或者加一个创建注册表的语句,不然会报错 前台: <%@ Page Language="C#" AutoEv ...
- 【项目实例】使用C#开发纽曼USB来电通来电弹屏客户端小结
基于CRM客户和咨询者的普遍需求,老板决定在CRM系统上加入来电弹屏功能,所谓来电弹屏,就是当一个电话打入时,电脑会弹出该电话号码对应的客户.联系人或者供应商详细信息,如果是新号码,则添加一个新的客户 ...
- C++ Code_ImageList
主题 1. 创建图像列表 2. 使用图像列表绘图 3. 4. 5. 代码::创建图像列表 双击 Cproject03Dlg在 下面添加 1 句 ////////////////// ...
- TOJ3651确定比赛名次
确定比赛名次 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte Total Submit: 23 ...
- Swift - 初次使用:
今天Apple放出了新的编程语言.然后下载了Xcode6把系统升级到Mac OS 10.9.3 (Xcode6的系统最低要求). 创建了一个项目,折腾半天 都不知道怎么导入一个ViewControll ...
- C#对Windows服务的操作
一.安装服务: private void InstallService(IDictionary stateSaver, string filepath) { try { System.ServiceP ...
- docker镜像的操作
在主机上列出镜像 sudo docker images 每从Docker Hub下载一个镜像就会启动相对的创建一个容器 在镜像列表中看到三个重要的东西: 来自什么镜像源,例如ubuntu 每个镜像都有 ...
- iOS网络监测如何区分2、3、4G?
你可以在Github下载这个Demo 首先,引入系统的Reachability类,不知道怎么引入的话,在Xcode,按下shift+command+0,搜索Reachability,看到图中所选的工程 ...
- C#操作XML(带命名空间)
之前文章讲述了使用c# xpath如何操作xml文件,在实际开发项目中,遇到的很多xml文件都是带有命名空间的,如果还是用之前的代码获取,那将获取到null.本文讲解操作代码有命名空间的Xml文件,以 ...