JavaScript-DOM-事件

先看下面一段代码

 

<html>

<head>

<title>Example</title>

</head>

<body οnclick="handleClick()">

<div id="div" οnclick="handleClick()"></div>

</body>

</html>

 

对于上段代码:ie的事件流如图(1)所示:

 

(1)

 

firefox事件流如图(2)所示:

 

(2)

 

从两幅图可以看出:

 

1.IE是冒泡型事件流;firefox是捕获型在前冒泡型在后(DOM标准)。

 

2.IE不支持文本节点事件。

 

3.IE不支持window事件。

 

注:经测试firefox最底层元素(本例是div)的事件执行顺序是先注册先执行,无事件类型区别。

 

下面是一些主要事件操作和兼容问题:

 

一.事件的 注册与取消注册

 

var oDiv=document.getElementById("div");

var fnHandler=function(){};

 

IE:

 

oDiv.οnclick=function(){};

oDiv.attachEvent("onclick",fnHandler); //此方法可为事件注册多个方法

oDiv.detachEvent("onclick",fnHandler); //删除注册了的事件

 

Firefox(DOM标准):

 

oDiv.οnclick=function(){};//冒泡阶段

oDiv.addEventListener("click",fnHandler,true); //此方法可为事件注册多个方法

oDiv.removeEventListener("click",fnHandler,true); //删除注册了的事件

 

注:第三个参数true表示是捕获阶段,false表示是冒泡阶段

 

 

二.事件对象获取

 

IE:

 

oDiv.οnclick=function(){

var oEvent=window.event //IE中事件对象是window对象的一个属性

}

 

Firefox:

 

oDiv.οnclick=function(){

var oEvent=arguments[0] //Firefox中事件对象是方法体第一个参数

}

 

oDiv.οnclick=function(e){

var oEvent=e;

}

 

 

三.获取事件目标来源

 

IE:

 

oDiv.οnclick=function(){

var oEvent=window.event;

var oTarget=oEvent.srcElement;

}

 

Firefox:

 

oDiv.οnclick=function(e){

var oEvent=e;

o.Target=e.target;

}

 

 

注:这个来源是事件流的最低端对象,这里是div.

 

 

四.阻止事件默认行为

 

IE:

 

oDiv.οnclick=function(){

var oEvent=window.event;

oEvent.returnValue=false;

}

 

Firefox:

 

oDiv.οnclick=function(e){

var oEvent=e;

oEvent.preventDefault();

}

 

 

五.阻止事件冒泡

 

IE:

 

oDiv.οnclick=function(){

var oEvent=window.event;

oEvent.cancelBubble=true;

}

 

Firefox:

 

oDiv.οnclick=function(e){

var oEvent=e;

oEvent.stopPropagation();

}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值