`
xiexd
  • 浏览: 245197 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

addEventListener 和attachEvent用法

阅读更多

对于IE的attachEvent方法可能大家都比较熟,现在说说FireFox的addEventListener的用法。

addEventListener的参数一共有三个,语法为:

element.addEventListener(type,listener,useCapture)

下面是详解

  • 其中element是要绑定函数的对象。
  • type是事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on"。
  • listener当然就是绑定的函数了,记住不要跟括号
  • 最后一个参数是个布尔值,表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)。

userCapture若为true,则浏览器采用Capture,若为false则采用bubbing方式。建议用false,看个例子吧。

html代码

<div id="div_test"> <input type="button" id="btn_test" value="se4.cn技术基地" /> </div>

js代码

window.onload=function(){ document.getElementById("div_test").addEventListener("click",test1,false); document.getElementById("btn_test").addEventListener("click",test2,false); } function test1(){ alert("外层div触发") } function test2(){ alert("内层input触发") }

自己体验一下,如果userCapture是true则test1先触发,如果userCapture是false则test2先触发。

 

 

 

 

 

 

 

 

 

在近来的工作中,用到了attachEvent方法,该方法可以为某一事件附加其它的处理事件,有时候可能比较有用,这里将其基本用法总结一下。

其语法可以查看《DHTML手册》,里面有详细的说明,这里贴一个例子,该例子来自互联网:

document.getElementById("btn").onclick = method1;
document.getElementById("btn").onclick = method2;
document.getElementById("btn").onclick = method3;
如果这样写,那么将会只有medhot3被执行

写成这样:
var btn1Obj = document.getElementById("btn1");
//object.attachEvent(event,function);
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);
执行顺序为method3->method2->method1

如果是Mozilla系列,并不支持该方法,需要用到addEventListener
var btn1Obj = document.getElementById("btn1");
//element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener("click",method1,false);
btn1Obj.addEventListener("click",method2,false);
btn1Obj.addEventListener("click",method3,false);
执行顺序为method1->method2->method3

分享到:
评论
3 楼 moxia 2013-09-30  
softor 写道
这是我格式化的代码:
<div id="div_test"> <input type="button" id="btn_test" value="按钮" /> </div>

<script type="text/javascript">
<!--
window.onload = function() {
	document.getElementById("div_test").attachEvent("onclick", test1, false);
	document.getElementById("btn_test").attachEvent("onclick", test2, false);
}
function test1() {
	alert("外层div触发")
}
function test2() {
	alert("内层input触发")
}
//-->
</script>

人家举的是addEventListener的例子,你怎么改成attachEvent...
<div id="div_test"><input type="button" id="btn_test" value="按钮" /></div>

<script type="text/javascript">
<!--
window.onload = function() {
	document.getElementById("div_test").addEventListener("click", test1, false);
	document.getElementById("btn_test").addEventListener("click", test2, false);
}
function test1() {
	alert("外层div触发")
}
function test2() {
	alert("内层input触发")
}
//-->
</script>
2 楼 softor 2012-08-15  
这是我格式化的代码:
<div id="div_test"> <input type="button" id="btn_test" value="按钮" /> </div>

<script type="text/javascript">
<!--
window.onload = function() {
	document.getElementById("div_test").attachEvent("onclick", test1, false);
	document.getElementById("btn_test").attachEvent("onclick", test2, false);
}
function test1() {
	alert("外层div触发")
}
function test2() {
	alert("内层input触发")
}
//-->
</script>
1 楼 softor 2012-08-15  
你第一段实例里有连个事件监听,你说的“如果userCapture”指的是哪个userCapture?

这例子怎么提现冒泡和捕获的?求教?

相关推荐

    attachEvent和addEventListener 使用方法

    NULL 博文链接:https://zhang-yingjie-qq-com.iteye.com/blog/321486

    javascript attachEvent和addEventListener使用方法

    attachEvent与addEventListener区别适应的浏览器版本不同,同时在使用的过程中要注意

    window.addEventListener来解决让一个js事件执行多个函数

    可能你也碰到过这种情况,就是在js的代码中用了[removed]后...至于attachEvent和addEventListener的用法,可以自己Google或百度一下。 代码如下: if (document.all){ window.attachEvent(‘onload’,函数名)//IE中 } els

    讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别

    讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别

    Javascript 的addEventListener()及attachEvent()区别分析

    大家都知道事件的用法就是当某个事件(状况)被触发了之后就会去执行某个Function, 尤其是Javascript, 在当红AJAX的催化下, 了解Javascript的Event用法更加重要, 在这里就大概介绍一下avascript的Event用法.

    Javascript处理DOM元素事件实现代码

    但是浏览器有addEventListener和attachEvent方法可供调用,从而模拟出类似于C#中的事件委托的事件触发机制! 代码如下: /* * 功能:事件处理 * Author:LQB * 时间:2009-1-4 * #include JCore.js */ var JEvents = ...

    封装了一个支持匿名函数的Javascript事件监听器

    关于js中的事件监听大家用的比较多了,无非是判断浏览器是否支持addEventListener和attachEvent,网上搜索关于事件监听的方法也挺多,但是总有些不是很完善。下面的方法中对于添加事件监听的方法是一样的,只不过在...

    事件高级用法及兼容写法

    事件绑定兼容性问题:在低版本IE中(IE 6/7/8)不支持addEventListener和removeEventListener, 在低版本IE中可以使用: attachEvent(事件名,事件函数) 绑定事件 detachEvent 取消事件 注意:事件名 包含on前缀 两...

    详解javascript事件绑定使用方法

    如果有多个javascript文件,那么极有可能出现多个[removed]事件,但是最后起作用的只有一个,这时候就需要使用事件绑定来解决这个问题了。 IE方式 attachEvent(事件名称, 函数),绑定事件处理函数 detachEvent(事件...

    jQuery:unbind方法的使用详解

    用原生addEventListener以及IE下的attachEvent注册的事件以及使用onclick/onmouseover属性绑定的事件不能通过unbind进行解绑。 例如: 以下的事件可以通过unbind解绑: $('a').click(function(){}); $('a').bind...

    前端面试宝典V3.0.docx

    22、比较 attachEvent 和 addEventListener?(必会) 115 23、document.write 和 innerHTML 的区别?(必会) 115 24、 什么是 window 对象?什么是 document 对象?(必会) 116 25、Js 拖动的原理?(必会) ...

    js添加绑定事件的方法

    先介绍js添加事件通用方法,具体内容... 测试添加事件:firefox使用addEventListener,ie使用attachEvent 点击此p标签,绑定了2个弹出事件 [removed] function test1() { alert&#40;test1&#41;; } function t

    多种方法实现JS动态添加事件

    JS动态添加事件的方法有很多,我们可以使用setAttribute、attachEvent 和 addEventListener等等,感兴趣的朋友可以参考下

    js添加事件的通用方法推荐

    js添加事件的通用方法推荐 ... 测试添加事件:firefox使用addEventListener,ie使用attachEvent 点击此p标签,绑定了2个弹出事件 [removed] function test1() { alert&#40;test1&#41;; } function test2(){

    javascript在事件监听方面的兼容性小结

    1,IE使用attachEvent/detachEvent方法来添加和删除事件监听器;w3c使用addEventListener/removeEventListener方法。 2,IE对其事件使用onevent的命名方式,而w3c的是event的命名方式。 3,IE事件监听器内使用的是一...

    snooper:间谍addEventListenerattachEvent调用

    使用Snooper,您可以检索以前使用addEventListener (以及将来的attachEvent )添加到元素的侦听器。 用法 您可以使用将其添加到您的项目中,也可以从该存储库中下载它。 在要监视的任何其他脚本之前先加载它。 例子...

    javascript中 try catch用法

    先看个实例 &lt;input id='b1' type='button' value='\u6309\u94ae'/&gt...oBtn.attachEvent(onclick,mto,false); } catch(e)//IE { oBtn.addEventListener(click,mto,false); } }; [removed] 注意的是: addEventLis

    理解JS绑定事件

    绑定事件有兼容性问题,在IE早期版本中使用的是obj.attachEvent(),而其他浏览器使用的则是addEventListener()。 这两个方法都有三个参数,分别为:事件类型,事件函数,最后一个是布尔值,true或者是false。 true...

Global site tag (gtag.js) - Google Analytics