IE实现的DOM事件流
来源:互联网 发布:react state数组 编辑:程序博客网 时间:2024/05/16 19:04
IE实现的DOM事件流
今天突然看到了IE中的event,于是想起来了DOM中的事件流。原来大概知道IE实现了冒泡的事件流模型。但是具体怎么样却忘记了。“好奇害死猫”啊——为了这个临时的问题花了一个多小时啊。下面先介绍IE5.5以上实现的事件流模型。
冒泡模型:DOM模型是一个树状模型,举例来说,如下面的代码
<a onclick="alert('a1'); ">aaa</a>
</div>
<a onclick="alert('a1'); event.cancelBubble=true;">aaa</a>
</div>
注意这里设置的取消事件冒泡传递只是针对于当前的事件。具体说来如下面的代码:
<div onclick="alert('div1')">
<a onclick="alert('a1'); if(g++ == 0)event.cancelBubble=true;">aaa</a>
</div>
第一次点击链接的时候,全局变量g==0,所以会取消事件向外传递,也就是div的onclick事件不会执行,此时g=1。第二次点击链接的时候,不会再设置event.cancelBubble=true,所以事件仍然向外传递,即div的onclick事件会执行。
捕获模型:如果要动态添加或删除DOM元素的事件处理函数的话,用上面的方法肯定是不方便的。因此每个对象都有attachEvent和detachEvent两个方法用于增加和移除事件绑定。微软DHTML帮助文档对attachEvent方法的描述如下:
bSuccess = object.attachEvent(sEvent, fpNotify)
Syntax
bSuccess = object.attachEvent(sEvent, fpNotify)
Parameters
sEvent
Required. String that specifies any of the standard DHTML Events.
fpNotify
Required. Pointer that specifies the function to call when sEvent fires.
Return Value
Boolean. Returns one of the following possible values:
true
The function was bound successfully to the event.
false
The function was not bound to the event.
Remarks
When sEvent fires on the object, the object's sEvent handler is called before fpNotify , the specified function. If you attach multiple functions to the same event on the same object, the functions are called in random order, immediately after the object's event handler is called.
上面说的关键点是捕获事件(fpNotify)在原始事件(sEvent)之后响应,如果捕获事件绑定多个函数的话,不能保证这些函数的执行顺序。
对于下面的代码:
<div onclick="alert('div1')">
<a onclick="alert('a1'); if(g++ == 0)event.cancelBubble=true;">aaa</a>
</div>
<script>
document.all.tags("a")[0].attachEvent("onclick", function (){alert("a2");});
document.all.tags("a")[0].attachEvent("onclick", function (){alert("a3");});
document.all.tags("a")[0].attachEvent("onclick", function (){alert("a4");});
</script>
FireFox等其他浏览器多半实现的是DOM2的标准事件流,与IE自家的不一致,以后再介绍。
<script type="text/javascript"><!--google_ad_client = "pub-1992382271196226";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as_rimg";google_cpa_choice = "CAEQ_ZOgnAIQABoIjhOlodMli9UomcD3cyiZwPdzMAA";//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- IE实现的DOM事件流
- IE和DOM事件流的区别
- IE和DOM事件流的区别
- IE和DOM事件流的区别
- IE和DOM事件流的区别
- ie和dom事件流的区别
- IE和DOM事件流的区别
- IE和DOM事件流的比较
- IE与DOM事件流的区别
- IE和标准DOM的事件模型
- IE事件流(模型)与DOM事件流(模型)的区别。
- 【javascript总结】javascript的IE事件和DOM事件模型
- 事件流:DOM事件与IE事件,事件冒泡与事件捕获
- javascript 事件处理 IE和标准dom 的差别
- JavaScript 事件处理 IE 和标准 DOM 的差别
- DOM标准与IE的html元素事件模型区别
- IE与标准DOM的兼容之javascript事件监听
- DOM标准与IE的html元素事件模型区别
- System.Collections
- C#中Win程序画面初始位置问题
- gdb 调试core
- 随笔--股票终于卖了!
- 通过Visual Studio 2005 类设计器设计一个API
- IE实现的DOM事件流
- 迅雷创业与生存密码(节选自网络)
- java中文件操作大全(转)
- FCKeditor编辑器使用
- 金山词霸每日一句
- 开发RCP时如何去掉NetBeans Platform的版本信息
- VB.NET语法基础
- c# 做 windows 托盘程序
- 多友北京总部