Browser 的 JavaScript - Event 及其事件源的取得

本文详细阐述了IE和Firefox浏览器在事件获取方面的区别,并通过实例展示了如何在不同浏览器环境下正确处理事件,避免运行时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们都知道 IE 和 FireFox 对「事件」取得的方式 不一样 

(1) IE 可利用全局变量 window.event 

(2) FireFox 可利用传递参数的方法来取得 event ,或者如果没有传递参数,则系统会自动将「事件」放在第一个参数 arguments[0] 



(1) 如果 

e = arguments.callee.caller.arguments[0] || window.event; 

写成 

e = arguments[0] || window.event; 

FireFox 在按下button后不会有反应,而且会在控制台出现「TypeError: e is undefined」的错误信息

也就是 arguments[0]前面一定要加 arguments.callee.caller 


(2) 如果这两句 

e = arguments.callee.caller.arguments[0] || window.event; 

a = e.target || e.srcElement; 

合并成一句也会出错 

(2-1) 如果合并成 

var a = arguments.callee.caller.arguments[0].target || window.event.srcElement; 

则 FireFox不会出错,因為FireFox的正确式写在前面 

IE 则会出现「无法取得属性'target'的值:物件為null或未经定义」的错误 

(2-2) 如果合并成 

var a = window.event.srcElement; | arguments.callee.caller.arguments[0].target 

IE 不会错,因為这次是IE的正确式写在前面 

FireFox 就会出现「TypeError: window.event is undefined」的错误 

(2-3)也就是一定要先得到正确表示的「事件」,再利用该「事件」来读取「触发事件的源头」,一定要分两步,不能合成一步 


转载于:https://my.oschina.net/u/1403236/blog/193673

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值