Javascript高级编程学习笔记(66)—— 事件(10)变动事件
变动事件
DOM2级的变动事件,能在DOM中的一部分发生变化时给出提示
变动事件是为XML或HTML DOM 设计的,并不特定于某种语言
DOM2级定义了如下变动事件:
- DOMSubtreeModified:在DOM结构发生变化时触发,即会在下面所有事件触发后触发
- DOMNodeInserted:当一个节点作为子节点插入另一个节点中时触发
- DOMNodeRemoved:节点从父节点中移除时触发
- DOMNodeInsertedIntoDocument:一个节点被直接插入文档或通过子树间接插入文档后触发,在DOMNodeInserted 事件之后触发
- DOMNodeRemovedFromDocument:一个节点直接从文档移除,或通过子树间接从文档移除触发,在DOMNodeRemoved 事件之后触发
- DOMAttrModified:特性被修改之后触发
- DomCharacterDataModified:在文本节点的值发生变化时触发
可以使用以下代码判断浏览器对变动事件的支持性:
var isSupported = document.implementation.hasFeature("MutationEvents","2.0");
由于DOM3作废了其中的部分变动事件,所以下面只介绍仍被支持的事件
删除节点
当我们使用 removeChild() 或 replace Child()从DOM中删除节点时
首先会触发 DOMNodeRemoved 事件
在这个事件的 event 事件对象中
event.target 是被删除的节点
event.relatedNode 则是对目标节点的父节点的引用
在该事件触发时,目标节点还尚未从其父节点移除,因此这时其 paerentNode 仍指向其父节点
该事件会冒泡因此可以在DOM的任何层次上处理它
此后在目标节点即其子节点(如果有的话)会相继触发 DOMNodeRemovedFromDocument 事件,该事件不会冒泡,所以只能在事件流的处于目标阶段进行处理
此外该事件的 event 对象不包含其它信息如:不包括relatedNode
然后触发 DOMSubtreeModified 事件,事件的目标元素是被移除元素的父节点
此时的事件对象也不会提供额外的信息,如:relatedNode
插入节点
在使用 append Child()replaceChild()或者insertBefore()向DOM中插入节点时
首先会触发 DOMNodeInserted 事件
该事件的目标是被插入的节点
同样地,event.relatedNode 指向目标节点的父节点
当该事件触发时 目标元素已经插入到了新的父节点中 ,该事件是冒泡的,同样可以在DOM的各个层次上对其进行处理
此后会触发 DOMNodeInsertedIntoDocument 事件,该事件不冒泡
所以需要在插入之前为目标元素添加该事件的事件处理程序
最后一个触发的事件是 DOMSubtreeModified,在插入后的插入节点的父节点上触发
Javascript高级编程学习笔记(66)—— 事件(10)变动事件的更多相关文章
- Javascript高级编程学习笔记(71)—— 模拟事件(1)DOM事件模拟
事件,指的是网页中某个特定的交互时刻 一般来说事件由浏览器厂商负责提供,一般由用户操作或者其它浏览器功能来触发 但是有一类特殊的事件,那就是由我们开发人员通过JS触发的事件 这些事件和浏览器创建的事件 ...
- Javascript高级编程学习笔记(72)—— 模拟事件(2)IE事件模拟
IE中的事件模拟 低版本的IE浏览器作为前端开发的一股清流,想避过都不行 虽然低版本IE正在逐步被市场淘汰,不得不承认IE8以下的浏览器依然占了不小的份额 所以这里大概介绍IE8以下的低版本IE中的事 ...
- Javascript高级编程学习笔记(57)—— 事件(1)事件流
事件 JS与HTML的交互是通过事件实现的 而事件指的就是:文档或浏览器窗口特定的交互瞬间 可以通过侦听器来预定事件,以便在事件发生时执行相应的代码 这种模式也是设计模式中的观察者模式 事件流 有了事 ...
- Javascript高级编程学习笔记(70)—— 事件(14)内存和性能
由于事件处理程序是现代的web程序交互能力的提供者 所以在日常实践中,我们免不了要向页面中添加大量的事件处理程序(不管是用于用户交互还是用于统计用户数据) 在创建GUI(图形用户界面)的语言(如C#) ...
- Javascript高级编程学习笔记(69)—— 事件(13)触摸与手势事件
触摸与手势事件 由于移动设备既没有鼠标也没有键盘,所以在为移动浏览器开发交互性网页时,常规的鼠标键盘事件根本不够用 所以早期的苹果为Safari 添加了一些与触摸相关的事件 随着后面Android的W ...
- Javascript高级编程学习笔记(68)—— 事件(12)设备事件
设备事件 随着智能手机与平板电脑的普及,为了更好地让用户与这些设备进行交互 浏览器引入了一种新的方式,而一类新的事件也应运而生,这就是设备事件 W3C从2011年开始制定关于设备事件的草案 下面将会介 ...
- Javascript高级编程学习笔记(67)—— 事件(11)HTML5事件
DOM规范没有涵盖所有浏览器支持的所有事件 而许多浏览器出于满足用户需求,或解决特殊问题的目的,实现了一些自定义事件 HTML5列出了浏览器应该支持的所有事件,这里只讨论得到浏览器完善支持的事件(并非 ...
- Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件
键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...
- Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件
鼠标与滚轮事件 鼠标事件是web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备 DOM3级事件中定义了9个鼠标事件: click:在用户单击主鼠标按钮(一般为鼠标左键)或者按下回车时触发,这一点对 ...
随机推荐
- Java多线程消费者、生产者的基本思路
多线程主要考察的就是 线程的同步控制 生产者消费者的思路就是,当 一个线程执行时让另一个线程 挂起就行了 ThreadOne.ThreadTwo同时运行,添加一个变量在一个公共类(下边的Funct ...
- Spring的xml配置文件中约束的必要性 找不到元素 'beans' 的声明
今天在复习Spring MVC框架的时候,只知道xml配置文件中的约束有规范书写格式的作用,所以在配置HandlerMapping对象信息的时候没有加入约束信息之后进行测试,没有遇到问题.后来在配置S ...
- touch.js 手机端的操作手势
使用原生的touchstart总是单击.长按有冒泡冲突事件,发现百度在几年开源的touch.js库,放在现在来解决手机端的操作手势,仍然很好用.
- 一个c程序反汇编过程(zz)
zz from http://blog.luoyuanhang.com/ 最基本的反汇编方法是gdb xxx: disassemble main/其他函数 #反汇编一个简单的C程序并分析 C 源码: ...
- 递归求6的阶乘(考虑int类型溢出)
编码 public class Factorial { public static void main(String[] args) { System.out.println(fac(6)); } p ...
- 那一夜,风雪交加,我在搞jquery------专题之jquery选择器
我们今天探讨下Jquery的用法,主要是研究选择器. 选择器可以分成四类: 1.基本选择器 核心代码: <script type="text/javascript"> ...
- 检测2个url的不同之处(爬虫分析接口)
就是简单的检测2个url的不同之处,在做爬虫时,要分析接口地址的不同之处,靠自己的眼睛有点累,所以写了一个小程序,不喜勿喷 #测试数据 a = "https://list.tmall.com ...
- JS阻止事件冒泡的3种方法之间的不同
什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这 ...
- canvas绘制圆图输出图片格式
function drawCircleImage(url, callback) { const canvas = document.createElement('canvas'); const img ...
- shiro简单配置 (写的不错 收藏一下)
抄袭的连接:https://blog.csdn.net/clj198606061111/article/details/24185023 注:这里只介绍spring配置模式. 因为官方例子虽然中有更加 ...