Event对象只在事件发生的过程中才有效。
Event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。
下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。
01.
<
html
>
02.
<
head
><
title
>Cancels Linkstitle
>
03.
<
script
>
04.
function cancelLink() {
05.
if (window.event.srcElement.tagName == "a" && window.event.shiftKey)
06.
window.event.returnValue = false;
07.
}
08.
script
>
09.
head
>
10.
<
body
onclick
=
"cancelLink()"
>
下面的例子在状态栏上显示鼠标的当前位置。
1.
<
body
onmousemove
=
"window.status = 'X=' + window.event.x + ' Y=' + window.event.y"
>
altKey, button, cancelBubble, clientX, clientY, ctrlKey, fromElement, keyCode, offsetX, offsetY, propertyName, returnValue, screenX,
screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y
1、altKey
描述:
检查alt键的状态。
语法:
event.altKey
可能的值:
当alt键按下时,值为 TRUE ,否则为 FALSE 。只读。
2、button
描述:
检查按下的鼠标键。
语法:
event.button
可能的值:
这个属性仅用于onmousedown, onmouseup, 和 onmousemove 事件。对其他事件,不管鼠标状态如何,都返回 0(比如onclick)。
3、cancelBubble
描述:
检测是否接受上层元素的事件的控制。
语法:
event.cancelBubble[ = cancelBubble]
可能的值:
这是一个可读写的布尔值:
例子:
下面的代码片断演示了当在图片上点击(onclick)时,如果同时shift键也被按下,就取消上层元素(body)上的事件onclick所引发的showSrc()函数。
01.
02.
function
checkCancel() {
03.
if
(window.event.shiftKey)
04.
window.event.cancelBubble =
true
;
05.
}
06.
function
showSrc() {
07.
if
(window.event.srcElement.tagName ==
"IMG"
)
08.
alert(window.event.srcElement.src);
09.
}
10.
11.
"showSrc()"
>
12.
![]()
"checkCancel()"
src=
"/sample.gif"
>
4、clientX
描述:
返回鼠标在窗口客户区域中的X坐标。
语法:
event.clientX
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
5、clientY
描述:
返回鼠标在窗口客户区域中的Y坐标。
语法:
event.clientY
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
6、ctrlKey
描述:
检查ctrl键的状态。
语法:
event.ctrlKey
可能的值:
当ctrl键按下时,值为 TRUE ,否则为 FALSE 。只读。
7、fromElement
描述:
检测 onmouseover 和 onmouseout 事件发生时,鼠标所离开的元素。 参考:18、toElement
语法:
event.fromElement
注释:
这是个只读属性。
8、keyCode
描述:
检测键盘事件相对应的内码。
这个属性用于 onkeydown, onkeyup, 和 onkeypress 事件。
语法:
event.keyCode[ = keyCode]
可能的值:
这是个可读写的值,可以是任何一个Unicode键盘内码。如果没有引发键盘事件,则该值为 0 。
9、offsetX
描述:
检查相对于触发事件的对象,鼠标位置的水平坐标
语法:
event.offsetX
10、offsetY
描述:
检查相对于触发事件的对象,鼠标位置的垂直坐标
语法:
event.offsetY
11、propertyName
描述:
设置或返回元素的变化了的属性的名称。
语法:
event.propertyName [ = sProperty ]
可能的值:
sProperty 是一个字符串,指定或返回触发事件的元素在事件中变化了的属性的名称。
这个属性是可读写的。无默认值。
注释:
你可以通过使用 onpropertychange 事件,得到 propertyName 的值。
例子:
下面的例子通过使用 onpropertychange 事件,弹出一个对话框,显示 propertyName 的值。
01.
<
head
>
02.
<
script
>
03.
function changeProp(){
04.
btnProp.value = "This is the new value";
05.
}
06.
function changeCSSProp(){
07.
btnStyleProp.style.backgroundColor = "aqua";
08.
}
09.
script
>
10.
head
>
11.
<
body
>
12.
<
p
>The event object property propertyName is
13.
used here to return which property has been
14.
altered.p
>
15.
<
input
type
=
"button"
ID
=
"btnProp"
onclick
=
"changeProp()"
16.
value
=
"Click to change the value property of this button"
17.
onpropertychange
=
'alert(event.propertyName+" property has changed value")'
>
18.
<
input
type
=
"button"
ID
=
"btnStyleProp"
19.
onclick
=
"changeCSSProp()"
20.
value
=
"Click to change the CSS backgroundColor property of this button"
21.
onpropertychange
=
'alert(event.propertyName+" property has changed value")'
>
22.
body
>
12、returnValue
描述:
设置或检查从事件中返回的值
语法:
event.returnValue[ = Boolean]
可能的值:
true 事件中的值被返回
false 源对象上事件的默认操作被取消
例子见本文的开头。
13、screenX
描述:
检测鼠标相对于用户屏幕的水平位置
语法:
event.screenX
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
14、screenY
描述:
检测鼠标相对于用户屏幕的垂直位置
语法:
event.screenY
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
15、shiftKey
描述:
检查shift键的状态。
语法:
event.shiftKey
可能的值:
当shift键按下时,值为 TRUE ,否则为 FALSE 。只读。
16、srcElement
描述:
返回触发事件的元素。只读。例子见本文开头。
语法:
event.srcElement
17、srcFilter
描述:
返回触发 onfilterchange 事件的滤镜。只读。
语法:
event.srcFilter
18、toElement
描述:
检测 onmouseover 和 onmouseout 事件发生时,鼠标所进入的元素。 参考:7、fromElement
语法:
event.toElement
注释:
这是个只读属性。
例子:下面的代码演示了当鼠标移到按钮上时,弹出一个对话框,显示“mouse arrived”
1.
<
script
>
2.
function testMouse(oObject) {
3.
if(oObject.contains(event.toElement)) {
4.
alert("mouse arrived");
5.
}
6.
}
7.
script
>
8.
<
button
ID
=
"oButton"
onmouseover
=
"testMouse(this)"
>Mouse Over This.button
>
19.type
描述:
返回事件名。
语法:
event.type
注释:
返回没有“on”作为前缀的事件名,比如,onclick事件返回的type是click
只读。
20. x
描述:
返回鼠标相对于css属性中有position属性的上级元素的x轴坐标。如果没有css属性中有position属性的上级元素,默认以body元素作为参考对象。
语法:
event.x
注释:
如果事件触发后,鼠标移出窗口外,则返回的值为 -1
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
21. Y
描述:
返回鼠标相对于css属性中有position属性的上级元素的y轴坐标。如果没有css属性中有position属性的上级元素,默认以body元素作为参考对象。
语法:
event.y
注释:
如果事件触发后,鼠标移出窗口外,则返回的值为 -1
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
1、 event对象只在事件发生的过程中才有效。
firefox里的event跟IE里的不同,IE里的是全局变量,随时可用;firefox里的要用参数引导才能用,是运行时的临时变量。
在IE/Opera中是window.event,在Firefox中是event;而事件的对象,在IE中是window.event.srcElement,在Firefox中是event.target,Opera中两者都可用。
2、下面两句效果相同
1.
var
evt = (evt) ? evt : ((window.event) ? window.event :
null
);
2.
var
evt = evt || window.event;
// firefox下window.event为null, IE下event为null
3、IE中事件的起泡
IE中事件可以沿着包容层次一点点起泡到上层,也就是说,下层的DOM节点定义的事件处理函数,到了上层的节点如果还有和下层相同事件类型的事件处理函数,那么上层的事件处理函数也会执行。例如, div 标签包含了 a ,如果这两个标签都有onclick事件的处理函数,那么执行的情况就是先执行标签 a 的onclick事件处理函数,再执行 div 的事件处理函数。如果希望的事件处理函数执行完毕之后,不希望执行上层的 div 的onclick的事件处理函数了,那么就把cancelBubble设置为true即可。