欢迎来到天天文库
浏览记录
ID:30511202
大小:20.87 KB
页数:19页
时间:2018-12-30
《基于html5新特性mutation observer实现编辑器的撤销和回退操作》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解基于HTML5新特性MutationObserver实现编辑器的撤销和回退操作 MutationObserver(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,MutationObserver会得到通知,本文给大家分享基于HTML5新特性MutationObserver实现编辑器的撤销和回退操作,感兴趣的朋友参考下 MutationObserver介绍 MutationObs
2、erver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件. MutationObserver(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,MutationObserver会得到通知。 MutationObserver有以下特点: •它等待所有脚本任务完成后,才会运行,即采用异步方式 •它把DOM变动记录封装成一个数组进行处理,而不是一条条地个别处理DOM变动。 •它即可以观察发生在DOM节点的所有变动,也可以观察
3、某一类变动 MDN的资料:MutationObserver对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 MutationObserver是一个构造函数,所以创建的时候要通过newMutationObserver; 实例化MutationObserver的时候需要一个回调函数,该回调函数会在指定的DOM节点(目标节点
4、)发生变化时被调用, 在调用时,观察者对象会传给该函数两个参数: 1:第一个参数是个包含了若干个MutationRecord对象的数组; 2:第二个参数则是这个观察者对象本身. 比如这样: 代码如下: varobserver=newMutationObserver(function(mutations){ mutations.forEach(function(mutation){ console.log(mutation.type); }); }); observer的方法 实例observer有三个方法:
5、1:observe ;2:disconnect;3:takeRecords ; observe方法对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 observe方法:给当前观察者对象注册需要观察的目标节点,在目标节点(还可以同时观察其后代节点)发生DOM变化时收到通知; 这个方法需要两个参数,第一个为目标节点,第二个
6、参数为需要监听变化的类型,是一个json对象, 实例如下: 代码如下: observer.observe(document.body,{ 'childList':true,//该元素的子元素新增或者删除 'subtree':true,//该元素的所有子元素新增或者删除 'attributes':true,//监听属性变化 'characterData':true,//监听text或者comment变化 'attributeOldValue':true,//属性原始值 'characterDataOldValue':true
7、 }); disconnect方法 disconnect方法会停止观察目标节点的属性和节点变化,直到下次重新调用observe方法; takeRecords 清空观察者对象的记录队列,并返回一个数组,数组中包含Mutation事件对象;对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 MutationObser
8、ver实现一个编辑器的redo和undo再适合不过了,因为每次指定节点内部发生的任何改变都会被记录下来,如果使用传统的keydown或者keyup实现会有一些弊端,比如: 1:失去滚动,导致
此文档下载收益归作者所有