获取事件对象的全家

 

事件对象

 

的获取很简单,很久前我们就知道

IE

中事件对象是作为全局对象

( window.event )

存在的,

Firefox

中则是做为句柄

( handler )

的第一个参数传入内的。所以一行代码就可以搞

 

 

view sourceprint?

 

1

 

var

 

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

 

 

下面分三种添加事件的方式讨论,你也许会看到以前没有看到过的获取方式。

 

 

1

,第一种添加事件的方式,直接在

html

的属性中写

JS

代码

 

 

view sourceprint?

 

1

 

<div

 

onclick="alert(4);">Div1 Element</div>

 

大概这是上世纪

90

年代的写法,那时候直接把

js

代码写在网页中很普遍,也许那时候的

js

不太重要,

只是用来做做验证或一些花哨的效果而已。

如何在这种添加事件方式下获取到事件对

象?

IE

中很简单,因为

event

是作为全局对象的,所以直接使用

event

即可,如下

 

view sourceprint?

 

1

 

<div

 

onclick="alert(window.event.type);">Div1 Element</div>

 

点击该

Div

后,

IE

中会弹出

'click'

字符的信息框。说明事件对象获取到了,如果在

 

Opera/Safari/Chrome 

中也测试了,

会发现效果和

IE

一样,

说明

 

Opera/Safari/Chrome 

也支持

IE

方式

( window.event )

获取事件对象。

 

 

Firefox

中会报错,提示:

window.event is undefined

,说明

Firefox

不支持

IE

方式获取事

件对象而是以句柄的第一个参数传入的,文章开头意见提到了。

 

上面的用

 

window.event 

来获取事件对象,

其实

window

可以省略的,

就像使用

alert

而不是

window.alert

一样。如

 

 

view sourceprint?

 

1

 

<div

 

onclick="alert(event.type);">Div1 Element</div>

 

 

IE/Opera/Safari/Chrome 

中测试,和刚刚不会有什么区别。在

Firefox

中再测,会有个

惊喜,你会发现居然弹出的是

"click"

信息框,而不是

"undefined"

 

两次测试区别仅仅一个用

window.event.type

一个用

event.type

这个问题下面详细讨论。