Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > javascript 事件处理 IE和标准dom 的差别
【标  题】:javascript 事件处理 IE和标准dom 的差别
【关键字】:javascript,IE,dom
【来  源】:http://www.blogjava.net/herodby/archive/2006/11/30/84625.html

javascript 事件处理 IE和标准dom 的差别

Your Ad Here ? 一个事件其实在页面上 有多个元素相应事件处理,点击页面上的一个button,会发生什么?其实 是相当于先后点击了按钮,它的容器,及这个页面.也就是说没一个元素都按照特定的顺序响应那个事件.事件的发生顺序在IE和mozilla在事件支持上的主要差别.
? 事件流
?? 冒泡技术.冒泡型事件的基本思想,事件按照从特定的事件目标开始到最不确定的事件目标.例如:
??? <html>
??????? <head>
??????????? test
??????? <head>
????????<body onclick="handle()">
???????????? <div onclick="handle1()">click</div>
??????? </body>
??? </html>
? IE5.5顺序是div??--body--document.
?在IE6中div-body--html--document.
?mozilla的顺序是div--body--html--html--document--window.

? 还有另外一种技术:捕获型事件,它的执行顺序正好和冒泡技术相反,从document开始到div结束.
DOM事件流?
???? 同时支持2种事件,但是捕获型事件先发生.2种事件流会触及DOM中的所有对象,从document开始,也在document结束.DOM事件流最独特的性质是,文本节点也会触发事件(在IE不会),所以如果点击click, dom事件是这样的:
? 首先window--document--body--div--click.
? 然后click--div--body--document--window.
所以一个事件处理函数在DOM浏览器中会执行2次.
给事件指定处理函数? 的做法比较简单?
var?obj = document.getElementById("id");
obj.onclick=function(){}
或者直接在html标签里加onclick="function-name"
这两种方式是在目前所有流行的浏览器种都可以使用.但是如何为每个事件分配多个处理函数呢?
IE的做法:
?? 在IE? 中,每个元素和window对象都有2个方法:attachEvent()和detachEvent(); attachEvent用来给一个事件附加事件处理函数. 而detachEvent用来将事件处理函数分离.每个方法都有2个参数:要分配的事件处理函数的名字(例如:onclick)和一个函数引用.
例如:
var fnClick=function(){alert("ss")}
var fnClick1=function(){alert("sss")}
var obj=document.getElementById("id")
obj.attachEvent("onclick",fnClick);
obj.attachEvent("onclick",fnClick1);
obj.detachEvent("onclick",fnClick);
事件的执行顺序是按照添加的顺序执行的.
DOM方法
???? dom中对应的方法是addEventListener()和removeEventListener ,这两个方法有3个参数,事件名称,要分配的函数和处理函数是用于冒泡阶段还是捕获阶段.如果事件处理函数是用在捕获阶段,第三个参数为true,冒泡阶段为false.用法和IE中的用法一样,不再多说了,就举一个例子吧:
var fnClick=function(){alert("ss")}
var fnClick1=function(){alert("sss")}
var obj=document.getElementById("id")
obj.addEventListener("click",fnClick,false);
obj.addEventListener("click",fnClick1,false);
obj.removeEventListener("click",fnClick,false);
注意这里的是事件名称"click",不是要分配的事件处理函数的名字"onclick",自己体会一下吧.

如何获取事件对象:
??? 获取事件信息是很重要的事情,事件对象只在事件发生时被创建,而且只有在事件处理函数中可以访问,当所有的事件处理函数结束后,事件对象被销毁.
IE和DOM在获取事件对象上也是有差别的.
IE中,事件对象时window的一个属性event,也就是说必须在事件处理函数中这样访问:
obj.onclick=function(){obj 1= window.event;}
尽管它是window的属性,event对象也是只能在事件发生时访问.
DOM的准则说明,event对象必须座位唯一的参数传递给事件处理函数,所以在DOM浏览器中访问对象有两种方法:
1.obj.onclick=function(){obj1=arguments[0]}
2.obj.onclick=function(envent){}
事件的属性,今天先不写了.

Structs bean标签总结:【上一篇】
欢迎加入成都java俱乐部:【下一篇】
【相关文章】
  • 由 element.appendChild(newNode) ,谈开去, 分享几个并不常见的Dom操作技巧给大家
  • discusses the subtle differences between terms like “orientation,”
  • JavaScript就这么回事
  • Just another high performance string format function for JavaScript
  • javascript 之趣味 函数式编程
  • IE7.0浏览器中文版11月20日正式发布
  • 多图展示:微软IE1.0至7.0界面回顾
  • IE 7.0问世 可以用中文登网站
  • GridView的常见问题
  • 如何绕过正版验证安装 IE7 官方简体中文正式版
  • 【随机文章】
  • VBScript MonthName 函数
  • 利用关联将子关联记录取出
  • oracle9i學習 logmnr相關
  • FC6下使用Intel2915无线网卡
  • 想知道造成白头粉刺的原因如何治疗痤疮怎样治疗痤疮
  • informix竖表转横表实现过程
  • ASP.NET之火热
  • 买房日记
  • 如何用ROOT远程登陆UNIX系统和防御办法
  • 黑客避开检测的手段
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.