IE 11 注册事件处理程序终于回归W3C标准addEventListener

IE11放弃了attachEvent,转而遵循W3C标准使用addEventListener。addEventListener接受三个参数:事件类型、处理函数和是否在捕获阶段处理。在不同浏览器中,事件名加不加'on'及函数调用方式略有差异。测试表明,大部分浏览器允许事件名不加'on',但Firefox对函数调用方式有特殊要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前写代码一直通过下面方式,大概区分ie和非ie内核浏览器

if (window.attachEvent){
//IE 的事件代码
}else{
//其它浏览器的事件代码
}

但是今天把ie升级到11后,发现这种判断已经失效了,刚开始还以为电脑中毒了,让我好生郁闷,上网一查,才发现,ie11已经摒弃了attachEvent,而改用addEventListener

给个官网链接http://msdn.microsoft.com/zh-cn/library/ie/bg182625(v=vs.85).aspx


看一下addEventListener的参数说明

object.addEventListener(type, listener, useCapture)

参数type:String类型,指定事件名,如"onclick","onload"等;

参数listener:实现了 EventListener 接口或者是 JavaScript 中的函数;

参数useCapture:bool类型,当为false时为冒泡获取,当为true时为捕获获取,一般为false。


举个例子:obj.addEventListener("onclick",function(){alert("123")},false);//方式一

或写成obj.addEventListener("onclick",myfun(),false);//方式二

function myfun(){alert("123")}


几处说明:

1、对于事件名到底是加on还是不加on,我的测试结果是ie11、opera、google、firefox 加不加on都可以。

2、对于方式二中函数名到底写成myfun()还是myfun,我的测试结果是google、ie11、opera都需要加(),firefox 不加()。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值