`
xiexd
  • 浏览: 248602 次
  • 性别: 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 使用方法

    在JavaScript中,`...以上就是关于 `attachEvent` 和 `addEventListener` 的使用方法及其区别的详细介绍,它们在JavaScript事件处理中起着至关重要的作用。正确理解和使用这些方法可以提高代码的健壮性和兼容性。

    浅谈addEventListener和attachEvent的区别

    在JavaScript中,处理DOM事件监听有两个主要的方法:`addEventListener` 和 `attachEvent`。这两个方法在功能上相似,但存在一些关键的区别,特别是在浏览器兼容性和事件处理方式上。 `addEventListener` 是W3C标准...

    addEventListener和attachEvent二者绑定的执行函数中的this不相同

    在JavaScript中,`addEventListener`和`attachEvent`都是用于向元素添加事件监听器的方法,但它们之间存在一些关键差异,特别是在处理`this`关键字时。`addEventListener`是W3C标准的一部分,被大多数现代浏览器支持...

    javascript attachEvent和addEventListener使用方法

    在使用 attachEvent 和 addEventListener 方法时,需要注意以下几点: 1. 在 attachEvent 中,最后一个绑定的函数会最先执行,而在 addEventListener 中,绑定的函数按照绑定顺序执行。 2. attachEvent 只能用于 IE8...

    IE11没有window.attachEvent方法处理方法

    除了上述方法外,还可以考虑直接修改JavaScript代码,使用`addEventListener`方法替代`attachEvent`。这种方式的好处是不仅解决了IE11不支持`attachEvent`的问题,还让代码变得更加标准化和简洁。示例代码如下: ``...

    JS在IE和FF下attachEvent,addEventListener学习笔记

    本文将探讨在 Internet Explorer (IE) 和 Firefox (FF) 浏览器中处理事件的方法,特别关注 `attachEvent` 和 `addEventListener` 的使用。 #### 二、事件处理概述 在 JavaScript 中,事件是指由用户或浏览器引发的...

    addEventListener 的用法示例介绍

    在Internet Explorer(IE)浏览器中,由于其使用了不同的事件模型,需要使用`attachEvent`方法来达到类似的效果: ```javascript var btn1Obj = document.getElementById("btn1"); btn1Obj.attachEvent("onclick", ...

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

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

    javascript中attachEvent用法实例分析

    为了实现跨浏览器的事件绑定,我们需要同时使用`attachEvent`和`addEventListener`。一种常见的做法是创建一个通用的事件绑定函数,如下所示: ```javascript function addEvent(element, event, handler) { if ...

    JavaScript通过attachEvent和detachEvent方法处理带参数的函数

    总结来说,虽然attachEvent和detachEvent方法在IE早期版本中是非常实用的事件处理工具,但它们的使用方法稍显复杂,特别是当需要处理带有参数的事件监听函数时。现代的Web开发应优先考虑使用addEventListener和...

    JavaScript事件机制详细研究

    在使用 addEventListener 或 attachEvent 时,需要注意 IE 浏览器的兼容性问题,IE 浏览器使用 attachEvent 方法,而不是 addEventListener 方法。因此,在编写跨浏览器兼容的代码时,需要使用条件语句来判断浏览器...

    Js on及addEventListener原理用法区别解析

    需要注意的是,`addEventListener`在Internet Explorer 9以下版本不被支持,此时需要使用`attachEvent()`,其语法与`addEventListener`有所不同,事件类型需要加上`on`前缀,且不接受`useCapture`参数。 此外,...

    self.attachevent is not a function的解决方法

    总之,解决`self.attachevent is not a function`错误的关键在于理解`attachEvent`和`addEventListener`的区别,并通过条件判断或者使用库来实现跨浏览器的兼容性。同时,对于事件处理的模式选择,应根据实际需求和...

    attachEvent的使用方法与传递参数[IE|firefox]|angluo-javascript-37392.pdf

    `attachEvent`是Internet Explorer浏览器特有的事件处理方法,用于将函数绑定到DOM元素的特定事件上,例如点击、鼠标移动等。与W3C标准的`addEventListener`不同,`attachEvent`并不支持事件捕获阶段,并且它的事件...

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

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

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

    在本文中,我们将深入探讨`this`指针的用法以及IE的`attachEvent`与Firefox的`addEventListener`在事件处理上的差异。 首先,让我们来理解`this`的用法。在JavaScript中,`this`通常指向调用函数的那个对象。例如,...

    解决使用attachEvent函数时,this指向被绑定的元素的问题的方法

    ### 解决使用attachEvent函数时,this指向被绑定的元素的问题的方法 在Web开发中,尤其是在处理Internet Explorer(IE)浏览器兼容性问题时,我们经常会遇到`attachEvent`函数中的`this`指向问题。默认情况下,`...

Global site tag (gtag.js) - Google Analytics