JavaScript的事件监听

本文借鉴了w3c的事件监听器文章。

常用事件监听方法

(1)绑定HTML元素属性:<input type="button" value="clickMe" onclick="check(this)">//其中check是个函数,传参为this
(2)绑定DOM对象属性:document.getElementById("xxx").onclick=函数;要注意的是,这里的函数后面不能加括号,不然就会直接调用。而且js代码要放在监听事件之后,不然没有解析到函数,就会报错。

标准dom事件监听:

举例:

document.getElementById("hi").addEventListener("click",displayDate);//运行按钮出现时间

addEventListener()为指定元素指定事件处理程序,可以向一个元素添加多个事件处理程序,可以向任何dom对象添加时间处理程序,包括window对象。
removeEventListener()删除事件监听器
使用方法:

element.addEventListener(event, function, useCapture);

第一个参数是事件类型,第二个是需要调用的函数,第三个是布尔值,为true是事件捕获,为false是事件冒泡。函数可以为外部具名函数,也可以直接在括号里写匿名函数,但要注意,removeEventListener()不能移除匿名函数。布尔值可选,若是没写,默认为false。
注:事件不能使用前缀on,就直接写click等等就行
为元素附加事件处理程序而不会覆盖已有的事件处理程序

//为元素附加事件处理程序而不会覆盖已有的事件处理程序,也能够向相同的元素添加不同类型的事件。
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

兼容性

IE8,Opera6.0及其更早版本不支持这两种方法,所以对这些浏览器版本需要使用attachEvent()来添加事件处理程序,用detachEvent()来删除。
使用方法:

element.attachEvent(event, function);
element.detachEvent(event, function);

所以在针对跨浏览器的情况时,有如下解决方案:

var x=document.getElementById("myBtn");
if(x.addEventListener){
	//针对主流浏览器
	x.addEventListener("click",myFunction);
}else if(x.attachEvent){
	//针对IE8及更早版本浏览器
	x.attachEvent("onclick",myFunction);
}
//取消监听用的是detachEvent

这里插一个小知识点:
为了兼容不同的浏览器,在获取事件对象的时候一般采用如下方法:

op.onclick=function(oEvent){
	if(window.event){
		oEvent=window.event;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值