为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解event?

如何理解event?

AllySu 2017-12-01 14:20:40
<!DOCTYPE html> <html> <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     <title>按下键盘,显示keyCode</title>     <style>     body {         text-align: center;         font: 30px/1.5;     }     </style>     <script type="text/javascript">     window.onload = function() {         var oP = document.getElementsByTagName("p")[0];         document.onkeydown = function(event) {             var event = event || window.event;             oP.innerHTML = event.keyCode;             return false;         }     }     </script> </head> <body>     <p>这里将显示您按下键的 keyCode</p> </body> </html> ----------------------------------------------------------------------------------------------------- 第一:为什么var event = event || window.event;不是写在document.onkeydown函数外,不是先兼容再传参数吗? 第二:为什么删了参数event和 var event = event || window.event;后,不管在哪个浏览器测试,依然没有问题?
查看完整描述

2 回答

已采纳
?
pardon110

TA贡献1038条经验 获得超227个赞

第一个问题源于浏览器对事件对象解析。理论上只要各大浏览器厂商使用相同的api.就不用写一些兼容性代码。写在onkeydown函数内,是为了获取按键一动作产生的事件(keydown事件)。

第二问题。删除 代码没问题,只是你第用的浏览器版本太接近现代版本了(新版本各大浏览器api趋向一支致)。说白点,弄几个 低版本的浏览器测,比如ie6,7,8试试。或者在线一些不同版本内核的浏览器测试软件看看。

查看完整回答
反对 回复 2017-12-02
  • AllySu
    AllySu
    OK,IE6测试字体变大,其他没有问题。
?
好的好的

TA贡献2条经验 获得超0个赞

补充下, 在现代大多数浏览器中, 一次事件的事件对象(event), 是传给回调函数(callback)的, 于是你可以在你自己写的事件回调中定义形参(e或event或无论什么)拿到这个event对象,但是!! 瓜皮老IE,它的每次事件触发后, 不是通过回调函数把event给调用者, 而是直接赋给了window.event这个全局属性!!(脑残吧!) 所以,这个时候只能通过window.evnet访问了,综上所述,是为了兼容低版本IE。 所以,这段代码当然要放在回调内部, 放在外部的话, window.event还没被赋值呢。

查看完整回答
反对 回复 2017-12-28
  • 2 回答
  • 1 关注
  • 1889 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信