• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作_html5教程技巧

基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作_html5教程技巧

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含mutationobserver,编辑器,撤销等相关知识,匿名希望在学习及工作中可以帮助到您
MutationObserver介绍

MutationObserver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件.

Mutation Observer(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,Mutation Observer会得到通知。

Mutation Observer有以下特点:

•它等待所有脚本任务完成后,才会运行,即采用异步方式
•它把DOM变动记录封装成一个数组进行处理,而不是一条条地个别处理DOM变动。
•它即可以观察发生在DOM节点的所有变动,也可以观察某一类变动

MDN的资料: MutationObserver

MutationObserver是一个构造函数, 所以创建的时候要通过 new MutationObserver;

实例化MutationObserver的时候需要一个回调函数,该回调函数会在指定的DOM节点(目标节点)发生变化时被调用,

在调用时,观察者对象会 传给该函数 两个参数:

    1:第一个参数是个包含了若干个MutationRecord对象的数组;

    2:第二个参数则是这个观察者对象本身.

比如这样:


observer的方法

实例observer有三个方法: 1: observe ;2: disconnect ; 3: takeRecords ;

observe方法

observe方法:给当前观察者对象注册需要观察的目标节点,在目标节点(还可以同时观察其后代节点)发生DOM变化时收到通知;

这个方法需要两个参数,第一个为目标节点, 第二个参数为需要监听变化的类型,是一个json对象, 实例如下:


disconnect方法

disconnect方法会停止观察目标节点的属性和节点变化, 直到下次重新调用observe方法;

takeRecords

清空 观察者对象的 记录队列,并返回一个数组, 数组中包含Mutation事件对象;

MutationObserver实现一个编辑器的redo和undo再适合不过了, 因为每次指定节点内部发生的任何改变都会被记录下来, 如果使用传统的keydown或者keyup实现会有一些弊端,比如:

1:失去滚动, 导致滚动位置不准确;

2:失去焦点;
....
用了几小时的时间,写了一个通过MutationObserver实现的 undo 和 redo (撤销回退的管理)的管理插件 MutationJS , 可以作为一个单独的插件引入:(http://files.cnblogs.com/files/diligenceday/MutationJS.js):


MutationJS如何使用

那么这个MutationJS如何使用呢?


Mutation的实例mu有几个方法:

1:mu.undo() 操作回退;

2:mu.redo() 撤销回退;

3:mu.canUndo() 是否可以操作回退, 返回值为true或者false;

4:mu.canRedo() 是否可以撤销回退, 返回值为true或者false;

5:mu.reset() 清空所有的undo列表, 释放空间;

6:mu.without() 传一个为函数的参数, 所有在该函数内部的dom操作, mu不做记录;

MutationJS实现了一个简易的 undoManager 提供参考,在火狐和chrome,谷歌浏览器,IE11上面运行完全正常:


DEMO在IE下的截图:

MutatoinObserver的浏览器兼容性:

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support

webkit

26

14(14) 11 15 6.0WebKit

您可能想查找下面的文章:

  • 基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
  • 基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作_html5教程技巧

相关文章

  • 2017-08-06关于老式浏览器兼容HTML5和CSS3的问题
  • 2017-08-06HTML5学习心得总结(推荐)
  • 2018-12-03HTML5实战与剖析之一行一行看移动端结构
  • 2018-12-03html结合工业互联网实现智能飞机控制(附代码)
  • 2018-12-03HTML5边玩边学(八)-砖块贴图点阵字
  • 2018-12-03HTML5开发实例-ThreeJs实现粒子动画飘花效果代码分享
  • 2018-12-03http的方法,状态码和组成部分
  • 2018-12-03phonegap如何实现创建联系人的方法分析
  • 2017-08-06html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
  • 2018-12-03 html5+php如何实现文件拖动上传功能

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • html5+css3实现一款注册表单实例
    • html5规定是否对元素进行拼写和语法检查的属性spellcheck
    • H5之13__CSS过渡、动画和变换
    • 百度钱包ios移动端html5网页无法自动关闭问题
    • html5中为audio标签增加停止按钮动作实现方法
    • 用HTML5 实现橡皮擦的涂抹效果的教程_html5教程技巧
    • HTML5和Webkit实现树叶飘落动画
    • HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
    • 解析HTML5中的标签嵌套规则
    • 极客学院HTML5新特性基础视频课件源码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有