问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

javascript面向对象:事件对象event内容总结

提问网友 发布时间:2022-04-22 11:51
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2023-09-30 03:46

上面这段代码,在 JavaScript 的事件处理中比较常见,主要是为了兼容老版本的 Internet Explorer(主要是 IE9 之前的版本)而设立的,原因是老版 IE 不支持标准的 W3C 事件处理规范。

这段代码中的 e 代表事件(event)对象,即所谓的事件驱动源。下面以鼠标点击事件为例,作一个测试:

(HTML)

<!DOCTYPE html>
<html>
<body>
<button type="button" id="btn">Click</button>
<script type="text/javascript">
// JavaScript 代码
</script> 
</body>
</html>

(JavaScript)

document.getElementById("btn").onclick=function(e){
alert(e);
}

编写一个匿名函数 function(e){ alert(e); },并将其赋值给事件句柄(即 onclick),这是一个回调函数,相当于 onclick(e){ alert(e); }。这段代码在 Chrome、Firefox 或新版 IE(IE9 及以后的版本)等支持标准的浏览器下运行,弹出的应该是类似“[object MouseEvent]”的字符串,说明 e 为事件对象;而在老版 IE 下运行,结果就是“undefined”(未定义)。

显而易见,在标准的流程中, 事件对象默认由事件句柄函数的第一个参数传入,供处理函数使用;在老版 IE 中,这个事件对象却无法直接由句柄函数传入,反而可以使用一个全局变量来代表事件对象,这个变量即 window.event。同样,可以用例子验证:

document.getElementById("btn").onclick=function(e){
alert(window.event);
}

在老版 IE 中即可显示 window.event 为对象,说明可以通过这种方式取得事件对象。(其实除了 IE 外,Chrome 等浏览器中也存在 window.event,但是在支持标准的浏览器中,我们最好使用标准方式。)

现在,就可以理解为什么会出现  e=e||window.event 这种写法了。因为只有这样才能兼容老版 IE 的事件处理过程:如果浏览器支持标准的处理过程则使用句柄函数传入的第一个参数(e),反之则使用 IE 的处理方法(window.event)。从某种意义上说,标准的事件对象(e) 和老版 IE 中的 window.event 可以视为等价的(事实上有一些区别,这里就不详细区分了),两者任何一个有效都可以供我们使用。

document.getElementById("btn").onclick=function(e){
e=e||window.event;
// 使用 e 对象
}

于是,上面的这段代码就可以兼容几乎所有的浏览器了。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

JS 中的 event?event:window.event什么意思?求详解。 js 实现一些跨浏览器的事件方法详解及实例 javascript的event该怎么理解? JavaScript中event对象是做什么用的? javascript event对象的具体功能是什么 JS中的event 对象包含哪些东西 event,实例 详解 招聘普通工人去哪个网站? 酒店员工招聘信息怎么写? 工人招聘招聘信息怎么能快速招到人? 明明找工人的人很多,为什么网上还有很多招工信息? 招聘普工上什么网? 招组装饮水机的工人怎么写招聘信息? 工厂招聘工人在哪里招聘信息 上海工人招聘网最新招聘信息可靠吗? 深圳建筑工人招聘信息在哪些平台可以找到? 移动全国接听免费吗 中国移动国内接听全部免费吗? 中国移动套餐资费表? 移动手机办理什么业务可以全国接听免费? 中国移动是不是全国接听免费? jquery事件对象event有哪些属性和方法 如何在js中获取event对象 javascript event javascript 关于event的使用疑问? JS监听写法中event代表什么,是实参吗 JavaScript 中的dispatchEvent是怎么用的? 镞犳硶鏄剧ず椤甸溃锛屽洜涓哄彂鐢熷唴閮ㄦ湇锷″櫒阌欒?銆 javascript:关于js的function参数中带的Event 请简单说明javascript中处理事件的步骤 怎样编写可维护的面向对象JavaScript代码 iphone x锁屏无法上划 当AI碰上教育,这会为孩子带来什么好处? 人工智能与教育有哪些结合点? 人工智能对教育的影响? 人工智能技术在教育中有哪些应用 人工智能对教育的利弊? 金立手机系统进不去,提示恢复出厂设置,但是一直在那个界面 金立手机为什么系统桌面一直没有响应,应该怎么办 金立手机system停止运行什么意思? 金立系统界面停止运行怎么办?怎么回事???
Top