Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Javascript 的addEventListener()及attachEvent()区别分析

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

作者头像
smy
发布于 2018-04-03 05:53:44
发布于 2018-04-03 05:53:44
1.6K00
代码可运行
举报
文章被收录于专栏:smysmy
运行总次数:0
代码可运行

Mozilla中: 

addEventListener的使用方式: 

target.addEventListener(type, listener, useCapture); 

target: 文档节点、document、window 或 XMLHttpRequest。 

type: 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。 

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

useCapture :是否使用捕捉,一般用 false 。例如:document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); 

IE中: 

target.attachEvent(type, listener); 

target: 文档节点、document、window 或 XMLHttpRequest。 

type: 字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。 

listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 例如:document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);}); 

W3C 及 IE 同时支持移除指定的事件, 用途是移除设定的事件, 格式分别如下: 

W3C格式: 

removeEventListener(event,function,capture/bubble); 

Windows IE的格式如下: 

detachEvent(event,function); 

target.addEventListener(type, listener, useCapture); 

target 文档节点、document、window 或 XMLHttpRequest。 

type 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。 

listener 实现了 EventListener 接口或者是 JavaScript 中的函数。 

useCapture 是否使用捕捉,看了后面的事件流一节后就明白了,一般用 false 

事件触发时,会将一个 Event 对象传递给事件处理程序,比如: 

document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); 

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

attachEvent方法 按钮onclick IE中使用 

addEventListener方法 按钮click fox中使用 

两者使用的原理:可对执行的优先级不一样,下面实例讲解如下: 

attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列) 

addEventListener方法 用于 Mozilla系列 

举例: 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 

实例:(要注意的是div必须放到js前面才行) 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if  (typeof window.addEventListener !=undefined) {
 window.addEventListener(”load”,rollover,false);
 } else {
 window.attachEvent(”onload”,rollover)
 }

上述的 typeof window.addEventListener != “undefined” 程序代码可以判断使用者的浏览器是否支持AddEventListener这个事件模型, 如果不支持就使用attachEvent.

参考:http://www.jb51.net/article/18220.htm

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-12-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
javascript事件详解
事件流 事件流两种顺序:冒泡与捕获。 简单的添加与删除事件 obj.onclick=function(){} obj.onclick=null; 通用事件添加的删除 obj.addEventListener(),obj.attachEvent() obj.removeEventListener(),obj.attachEvent() 三个参数分别表示,(事件,绑定函数,事件流), 注意: 1.如果必须得删除事件,这种写法,不能用匿名函数,否则删除函数的时候,不方便。 2.attachEvent的事件名称是o
前朝楚水
2018/04/02
1.4K0
attachEvent和addEventListener区别
target.addEventListener(type, listener, useCapture);
书童小二
2018/09/03
9240
onpropertychange事件「建议收藏」
2.如果得用javascript改变触发对象的属性时,并不能触发onchange事件
全栈程序员站长
2022/07/22
6220
JavaScript(进阶)
正则用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则, 也可以将一个字符串中符合规则的内容提取出来。
神葳
2021/01/22
1.5K0
【前端 · 面试 】JavaScript 之你不一定会的基础题(一)
面试往往就是博弈的一个过程,但是如果你手中的筹码不够丰厚,那结局大概不会怎么理想。而筹码的增加往往依赖于我们日积月累的输入。
编程三昧
2021/08/12
5660
【前端 · 面试 】JavaScript 之你不一定会的基础题(一)
javascript当中绑定事件和方法
8.绑定事件和方法 once, long time to know that "script" must be put in behind, while "input" must be put in front, otherwise document.getElementById("button1"); can not find the "button1",alert("button1 is "+ button1); 结果就是null,为什么这次跟往常我们的印象不一样了呢?因为往常我们先写一段script,之后在body中写上诸如<INPUT TYPE="button" onclick="abc",之类的话,这样上面的abc这样的代码开始不会被执行,里面的诸如document.getElementById ("button1");也就正确了。这里为什么跟往常不一样呢?因为要在一开始时,先给button绑上事件代码,否则button无事件响应。 例 8.1(commonEventPrerequisiteIEFF.html) <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> </head> <INPUT TYPE="button" NAME="button1" ID="button1" VALUE="单击我"/> <script> function testie() { alert("单击按钮ie"); } function testFF() { alert("单击按钮FireFox"); } /**/ /*obj.addEventListener("click",function(){func("看到我了吧");},false); the third argument is: A Boolean flag value that indicates whether the event listener should use bubbling (由里向外) or capture (由外向里) event propagation. 只要我们 知道第三个参数和事件冒泡有关就可以了。缺省值为假,即冒泡的意思。具体例子参考后面的事件冒泡例子。 */ var button1 = window.document.getElementById("button1"); alert("button1 is "+ button1); alert("document.all is" + document.all); alert(typeof(window.addEventListener) + " is typeof window.addEventListener"); alert(typeof(window.attachEvent) + " is typeof window.attachEvent"); alert(window.addEventListener + " is window.addEventListener"); alert(window.attachEvent + " is window.attachEvent"); if (typeof window.attachEvent === "object") { alert("ie"); button1.attachEvent("onclick", testie); } if (typeof window.addEventListener === "function") { alert("firefox"); button1.addEventListener("click", testFF, false); } // button1.addEventListener("click",test,false); //button1.attachEvent("onclick" , test); var str = ""; </script> 更多请见:https://blog.csdn.net/qq_43650923/article/details/102210095
马克java社区
2019/10/29
7040
javascript当中绑定事件和方法
javaScript事件处理
JS事件指再浏览器窗体或者HTML元素上发生的,乐意触发JS代码块运行的行为,下面,我们一起来看看相关事件。
花狗Fdog
2020/11/24
2.4K0
javaScript事件处理
JavaScript 事件绑定
事件绑定分为两种:一种是传统事件绑定(内联模型,脚本模型),一种是现代事件绑定(DOM2级模型)。现代事件绑定在传统绑定上提供了更强大更方便的功能。 一.传统事件绑定的问题 传统事件绑定有内联模型和脚本模型,内联模型我们不做讨论,基本很少去用。先来看一下脚本模型,脚本模型将一个函数赋值给一个事件处理函数。 var box = document.getElementById('box');//获取元素 box.onclick = function () {//元素点击触发事件 alert('Lee'); };
汤高
2018/01/11
3.5K0
IScroll的那些事——内容不足时下拉刷新
之前项目中的列表是采用的IScroll,但是在使用IScroll有一个问题就是:当内容不足全屏的时候,是木有办法往下拉的,这样就达不到刷新的目的了。【这是本人工作中遇到的,具体例子具体分析,这里只作一个参考】 大致的例子是这样的: <style> * { margin: 0; padding: 0; } html,body,.container { width: 100%; height: 100%; }
糊糊糊糊糊了
2018/05/09
1.6K0
【JavaScript】JavaScript开篇基础(5)
方法监听注册方式:addEventListener() 特点:同一个元素同一个事件可以注册多个监听器(监听处理函数function),按注册顺序依次执行
E绵绵
2024/11/13
850
【JavaScript】JavaScript开篇基础(5)
面试官:考你几个简单的事件问题吧
事件处理是JavaScript中非常重要的概念,我们使用的客户端软件往往都是事件驱动的,所以面试官特别喜欢问一些事件相关的知识,这里记录几个常见的问题,供大家学习。
kai666666
2020/10/19
1.2K0
submit方法与onsubmit事件
经常我们的提交表单前都会用js对表单内容作验证,如果有问题,则不希望提单表单。那么,如果阻止表单提交呢?
跑马溜溜的球
2020/12/07
2.7K0
「面试常问」系统理解浏览器之事件机制
在早期 IE 和 Netscape 团队在开发第四代浏览器的时候,遇到一个问题:当点击一个按钮的时候,是应该先处理父级的事件呢?还是应该先处理按钮的事件呢?IE 和 Netscape 给出了 2 种完全相反的答案,IE 提出事件冒泡的概念,而 Netscape 则支持事件捕获。
用户4456933
2021/06/01
5750
「面试常问」系统理解浏览器之事件机制
jQuery 事件绑定 和 JavaScript 原生事件绑定
jQuery 中提供了四种事件监听绑定方式,分别是 bind、live、delegate、on,
Krry
2018/09/10
5.8K0
jQuery 事件绑定 和 JavaScript 原生事件绑定
关于DOM事件流、DOM0级事件与DOM2级事件
DOM 事件模型包括捕获和冒泡,捕获是从上往下到达目标元素,冒泡是从当前元素,也就是目标元素往上到 window
Leophen
2019/08/26
2.2K0
【JS】395-重温基础:事件
事件流描述的是从页面中接收事件的顺序,通常有这样两种完全相反的事件流概念:事件冒泡流(IE团队提出)和事件捕获流(网景团队提出)。
pingan8787
2019/11/05
1.1K0
事件
利用 on 开头的事件,如 onclick, 同一个元素同一个事件只能设置一个处理函数,出现多个处理函数的话,后面的会覆盖前面的。
赤蓝紫
2023/01/01
1.4K0
事件
JS 事件绑定、事件监听、事件委托详细介绍 转
在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定、事件监听、事件委托(事件代理)等。这些名词是什么意思呢,有什么作用呢?
晓歌
2018/08/15
9K0
JavaScript学习笔记(二)
JavaScript的事件机制:事件是JavaScript和DOM交互的桥梁,常见的click,load,mouseover都是事件的名字,事件发生时调用它的处理函数执行相应的JavaScript代码并给出响应。
wsuo
2020/07/31
9180
DOM事件基本概念大总结(前端必备)
事件流 这一概念源自于对事件触发对象的思考。例如常见的点击事件,鼠标移动事件。这些事件发生之时,往往不只是点击或者移动到某一特定元素上。 比如点击某一个按钮,而它是由上一层的父标签,或许在上一层还有父标签甚至是整个页面。因此点击一个元素可以看成是同时点击了父标签或者整个页面。那么此时事件应该怎么响应到指定标签呢? 事件冒泡 即事件从指定元素开始传播到最外层的元素,并且该事件不仅会在指定元素上发生,还会在传播过过程中的每一个元素上发生。 <html> <body> <div>
努力的Greatiga
2022/07/25
1.9K0
相关推荐
javascript事件详解
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验