JS的Event属性和方法

Event对象只在事件发生的过程中才有效。
Event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。

Event举例

下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。

01. <html>
02. <head><title>Cancels Links</title>
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">

Event属性

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

可能的值:

  • 0 没按键
  • 1 按左键
  • 2 按右键
  • 3 按左右键
  • 4 按中间键
  • 5 按左键和中间键
  • 6 按右键和中间键
  • 7 按所有的键

这个属性仅用于onmousedown, onmouseup, 和 onmousemove 事件。对其他事件,不管鼠标状态如何,都返回 0(比如onclick)。

3、cancelBubble

描述:
检测是否接受上层元素的事件的控制。

语法:
event.cancelBubble[ = cancelBubble]

可能的值:
这是一个可读写的布尔值:

  1. TRUE 不被上层原素的事件控制。
  2. FALSE 允许被上层元素的事件控制。这是默认值。

例子:
下面的代码片断演示了当在图片上点击(onclick)时,如果同时shift键也被按下,就取消上层元素(body)上的事件onclick所引发的showSrc()函数。

01. <script>
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. </script>
11. <body onclick="showSrc()">
12. <img onclick="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即可。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值