js-event事件
### JavaScript Event 事件详解 #### 一、Event 概述 在JavaScript中,`Event`对象扮演着极其重要的角色,它不仅代表着一个事件的状态,还提供了处理这些事件的方法与属性,使得开发者能够轻松地实现与用户的交互。通过深入理解`Event`对象,我们可以更好地控制页面的行为,提升用户体验。 #### 二、Event 的主要属性与方法 ##### 1. `type` 该属性表示触发事件的类型,如`"click"`等。不同的事件类型决定了事件如何被处理。例如,在HTML元素上设置事件监听器时,可以通过指定`type`属性来响应特定类型的事件。 ##### 2. `srcElement`(IE)/ `target` `srcElement`(在Internet Explorer中)和`target`属性用于标识事件发生的源元素。这意味着当你点击某个按钮时,可以通过`target`或`srcElement`获取到这个按钮元素。值得注意的是,在非IE浏览器中,通常使用`target`属性。 ##### 3. `button` 此属性返回触发事件时按下鼠标的键(IE)。其值为: - `0`: 无键按下 - `1`: 左键 - `2`: 右键 - `3`: 中键 对于现代浏览器,可以使用`buttons`属性来获取当前按下的鼠标键。 ##### 4. `clientX` / `clientY` 这两个属性分别表示鼠标指针相对于视口的位置。它们的值是从视口左上角计算出来的距离,可用于确定鼠标点击的具体位置。 ##### 5. `offsetX` / `offsetY` `offsetX`和`offsetY`表示鼠标相对于触发事件的元素的坐标位置。这对于处理像图片点击等事件非常有用,因为它可以帮助确定鼠标点击的确切位置相对于图片的坐标。 ##### 6. `altKey`, `ctrlKey`, `shiftKey` 这些属性表示触发事件时是否同时按下了Alt、Ctrl或Shift键。如果按下了相应的键,则这些属性的值为`true`,否则为`false`。 ##### 7. `keyCode` 在`keydown`、`keyup`事件中,`keyCode`属性返回与按键相关的键码。对于`keypress`事件,则返回按键的Unicode值。例如,当按下Enter键时,`event.keyCode`将返回13。 ##### 8. `fromElement` / `toElement` 在`mouseover`和`mouseout`事件中,`fromElement`和`toElement`属性分别表示鼠标移动离开和进入的元素。这有助于识别鼠标从哪个元素移到了哪个元素。 ##### 9. `cancelBubble` 该属性用于控制事件是否冒泡到父元素。如果将其设置为`true`,则阻止事件继续向上冒泡;如果是`false`,则事件将继续传播到父元素。这种机制在需要阻止某些默认行为时非常有用。 ##### 10. `returnValue` 此属性用于控制是否阻止默认事件行为。如果设置为`false`,则会阻止默认行为的执行。 ##### 11. `attachEvent()` / `detachEvent()` 在Internet Explorer中,使用`attachEvent()`和`detachEvent()`来添加和移除事件监听器。这些方法在其他浏览器中并不支持,而是使用标准的`addEventListener()`和`removeEventListener()`方法。 #### 三、事件流 事件流是指事件是如何被处理的过程。主要包括三个阶段:捕获阶段、目标阶段和冒泡阶段。 - **捕获阶段**:事件从最外层的元素开始向下传播,直到到达目标元素。 - **目标阶段**:事件到达目标元素并在此处处理。 - **冒泡阶段**:事件从目标元素开始向外传播,直到达到文档的根元素。 #### 四、跨浏览器兼容性 在处理`Event`对象时,需要注意不同浏览器之间的差异。例如,Internet Explorer 使用`window.event`来访问当前事件,而其他浏览器则直接通过事件处理器函数的第一个参数来访问事件对象。为了确保代码的兼容性,可以使用条件语句来区分处理。 #### 五、事件委托 事件委托是一种优化技术,通过在父元素上注册事件监听器而不是为每个子元素单独注册监听器,从而减少内存消耗和提高性能。这种方式利用了事件冒泡机制,当子元素上的事件发生时,会冒泡到父元素,因此可以在父元素上处理这些事件。 #### 六、高级Event对象 除了基本的`Event`对象外,还有几个扩展的Event对象,如`UIEvent`、`MouseEvent`等。 ##### 1. `UIEvent` - **`view`**: 表示触发事件的窗口。 - **`detail`**: 提供有关事件的详细信息,如鼠标点击次数等。 ##### 2. `MouseEvent` - **`button`**: 指定触发事件时按下的鼠标键。在非IE浏览器中,可以使用`buttons`属性来获取当前按下的鼠标键。 - **`altKey`**, `ctrlKey`, `shiftKey`, `metaKey`: 表示是否同时按下了Alt、Ctrl、Shift或Meta键。 - **`clientX`**, `clientY`: 表示鼠标相对于视口的位置。 - **`screenX`**, `screenY`: 表示鼠标相对于屏幕的位置。 - **`relatedTarget`**: 在`mouseover`和`mouseout`事件中,表示鼠标从哪个元素移到了哪个元素。 理解`Event`对象及其属性和方法对于开发动态交互式的Web应用至关重要。通过灵活运用这些知识,可以有效地处理用户输入,并创建更加丰富和互动的用户体验。
--------------------------------------------------------------------------------
2007-11-21 19:47:11 (人气:106)
Event是Javascript中的重要事件,event代表事件的状态,专门负责对事件的处理,它的属性和方法能帮助我们完成很多和用户交互的操作,下面是对这个对象的简单总结,希望跟大家一起学习
一、Event对象的主要属性和方法
1.type:事件的类型,就是HTML标签属性中,没有“on”前缀之后的字符串,例如“Click”就代表单击事件。
2.srcElement:事件源,就是发生事件的元素。比如 a这个链接是事件发生的源头,也就是该事件的srcElement。(非IE中用target)
3.button:声明了被按下的鼠标键,是一个整数。0代表没有按键,1代表鼠标左键,2代表鼠标右键,4代表鼠标的中间键,如果按下了多个鼠标键,就把这些值加在一起,所以3就代表左右键同时按下。
4.clientX/clientY:是指事件发生的时候,鼠标的横、纵坐标,返回的是整数,它们的值是相对于包容窗口的左上角生成的。
5.offsetX/offsetY:鼠标指针相对于源元素的位置,可以确定单击Image对象的哪个象素。
6.altKey,ctrlKey,shiftKey:顾名思义,这些属性是指鼠标事件发生的时候,是否同时按住了Alt、Ctrl或者Shift键,返回的是一个布尔值。
7.keyCode:返回keydown和keyup事件发生的时候,按键的代码以及keypress事件的Unicode字符。比如event.keyCode=13代表按下了回车键;
8.fromElement、toElement前者是指代mouseover事件移动过的文档元素,后者指代mouseout事件中鼠标移动到的文档元素。
9.cancelBubble:一个布尔属性,把它设置为true的时候,将停止事件进一步起泡到包容层次的元素,它用于检测是否接受上层元素的事件的控制。true代表不被上层元素的事件控制,false代表允许被上层元素的事件控制。
10.returnValue:一个布尔值属性,设置为false的时候可以阻止浏览器执行默认的事件动作,相当于。
11.attachEvent()和detachEvent()方法:为制定DOM对象事件类型注册多个事件处理函数的方法,它们有两个参数,第一个是事件类型,第二个是事件处理函数。在attachEvent()事件执行的时候,this关键字指向的是window对象,而不是发生事件的那个元素。
- 粉丝: 6
- 资源: 55
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助