简介:

event 对象是 JavaScript 中一个非常重要的对象,用来表示当前事件。event 对象的属性和方法包含了当前事件的状态。

当前事件,是指正在发生的事件;状态,是与事件有关的性质,如 引发事件的DOM元素、鼠标的状态、按下的键等等。

event 对象只在事件发生的过程中才有效。

出现原因:

获取event对象

在 W3C 规范中,event 对象是随事件处理函数传入的,Chrome、FireFox、Opera、Safari、IE9.0及其以上版本都支持这种方式;但是对于 IE8.0 及其以下版本,event 对象必须作为 window 对象的一个属性。

◆ 在遵循 W3C 规范的浏览器中,event 对象通过事件处理函数的参数传入。

语法:
elementObject.OnXXX=function(e){
    var eve=e; // 声明一个变量来接收 event 对象
}

◆ 对于 IE8.0 及其以下版本,event 必须作为 window 对象的一个属性。

语法:
elementObject.OnXXX=function(){
    var eve=window.event; // 声明一个变量来接收event对象
}

问题便出现于此,因为js代码中封装了一个模拟jquery live,将事件委托到父容器document.body,传递了event,需要委托给控件绑定事件(需要支持ie8,ie真蛋疼):

解决如下:

var eve = event || window.event; //获取事件对象
var objEle = eve.target || eve.srcElement; //获取document 对象的引用

规范如下(参考http://www.itxueyuan.org/view/6340.html):

event 对象常用属性和方法(W3C规范)
属性 描述 IE 非IE W3C
altKey 返回当事件被触发时,"ALT" 是否被按下。 Yes Yes Yes
button 返回当事件被触发时,哪个鼠标按钮被点击。 Yes Yes Yes
clientX 返回当事件被触发时,鼠标指针的水平坐标。 Yes Yes Yes
clientY 返回当事件被触发时,鼠标指针的垂直坐标。 Yes Yes Yes
ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。 Yes Yes Yes
metaKey 返回当事件被触发时,"meta" 键是否被按下。 No Yes Yes
relatedTarget 返回与事件的目标节点相关的节点。 No Yes Yes
screenX 返回当某个事件被触发时,鼠标指针的水平坐标。 Yes Yes Yes
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。 Yes Yes Yes
shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。 Yes Yes Yes
bubbles 返回布尔值,指示事件是否是起泡事件类型。 No Yes Yes
cancelable 返回布尔值,指示事件是否可拥可取消的默认动作。 No Yes Yes
currentTarget 返回其事件监听器触发该事件的元素。 No Yes Yes
eventPhase 返回事件传播的当前阶段。     Yes
target 返回触发此事件的元素(事件的目标节点)。 No Yes Yes
timeStamp 返回事件生成的日期和时间。 No Yes Yes
type 返回当前 Event 对象表示的事件的名称。 Yes Yes Yes
方法 描述 IE 非IE W3C
initEvent() 初始化新创建的 Event 对象的属性。 No Yes Yes
preventDefault() 通知浏览器不要执行与事件关联的默认动作。 No Yes Yes
stopPropagation() 不再派发事件。 No Yes Yes

除了上面W3C规范所规定的属性和方法外,IE浏览器还支持以下属性。

event 对象的属性(IE特有)
属性 描述
cancelBubble 如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true。
fromElement 对于 mouseover 和 mouseout 事件,fromElement 引用移出鼠标的元素。
keyCode 对于 keypress 事件,该属性声明了被敲击的键生成的 Unicode 字符码。对于 keydown 和 keyup 事件,它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和使用的键盘的布局相关。
offsetX,offsetY 发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。
returnValue 如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。
srcElement 对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。
toElement 对于 mouseover 和 mouseout 事件,该属性引用移入鼠标的元素。
x,y 事件发生的位置的 x 坐标和 y 坐标,它们相对于用CSS动态定位的最内层包容元素。

愿世间无IE.

IE8及其以下,特有js event对象坑相关推荐

  1. JS Event对象详解

    JS Event对象详解 参考资料: js添加事件和移除事件:addEventListener()与removeEventListener() Event 对象 Event 对象代表事件的状态,比如事 ...

  2. jsevent(js event对象)

    javascript event对象的具体功能是什么 event对象只在事件发生的过程中才有效(比如鼠标点击,键盘按下等). event对象用以表示事件的状态, 触发event对象的元素(event. ...

  3. Js event对象offsetX, clientX, pageX, screenX, layerX, x区别(图解)

    简介 因为实际开发中,很少用到event对象的这几个值,每当写的时候又记不清,然后就要浪费时间去查找准确的资料,很是不爽,所以就做个记录~话不多说,直接上图(ps:图是网上找的,如果侵权,可立马删除) ...

  4. 图解Js event对象offsetX, clientX, pageX, screenX, layerX, x区别

    通过 3 张图和 1 张表格,轻松区别 Javascript Event 对象中的offsetX, clientX, pageX, screenX, layerX, x等属性. 一.测试代码如下: & ...

  5. 前端:JS/28/CSS DOM动态样式(style对象,style 对象属性与CSS属性的转换),Event DOM,事件对象简介(DOM和IE中的Event对象),实例:点出满天小星星

    CSS DOM动态样式 使用JS操作CSS中的各个属性: JS只能操作或修改行内样式,如:imgObjstyle.border = "1px solid red"; 对于类样式,通 ...

  6. JS中的event 对象详解

    JS中的event 对象详解 JS的event对象 Event属性和方法: 1. type:事件的类型,如onlick中的click: 2. srcElement/target:事件源,就是发生事件的 ...

  7. js基础-event对象

    Javascript的event对象用来描述js的事件.它主要作用于IE和NN4以后的各个浏览器版本中.event对象代表事件状态,如事件发生的元素,键盘状态.鼠标位置和鼠标按钮状态,一旦事件发生,便 ...

  8. ie8兼容性问题(五) event对象、e.target和e.preventDefault

    event对象 在chrome.firefox等浏览器中,event对象可从事件函数的参数中传入.ie8中须从window对象中获取 $("#btn").click(functio ...

  9. js中Event 对象 target 与 currentTarget的应用

    http://www.cnblogs.com/meng1314-shuai/p/7455575.html Event 对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠 ...

最新文章

  1. c#_winform打开关闭时淡入淡出
  2. 【Guava】使用Guava的RateLimiter做限流
  3. C++静态成员和静态方法
  4. 指针(*)、取地址()、解引用(*)与引用()
  5. cmd模式下如何从c盘转换到其他盘
  6. win python 怎么打开建立一个孤立的进程_python实现在windows服务中新建进程的方法...
  7. 西瓜书+实战+吴恩达机器学习(六)监督学习之逻辑回归 Logistic Regression
  8. if vue 跳出_vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
  9. 网络映射连接不上_Mac连接不上无线网络的解决方法
  10. 送你一份有态度的红包封面!
  11. JavaScript 事件-事件流,事件冒泡,事件捕获,事件绑定与解绑,事件委托、阻止冒泡、阻止默认行为详细篇
  12. MyEclipse Hibernate反向工程生成实体类
  13. 微信小程序——简单的售后服务单
  14. linux打开chm文件,安装kchmviewer,在linux下查看chm文件
  15. 陈式太极拳式名考释、动作、着法要领说明
  16. 你要悄悄学习3D城市,然后惊艳所有人(1)
  17. 用瑞利散射解释天空的颜色
  18. 芦笋制品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. python3 高效实现 最大质因数/质因数集合 方法
  20. datax安装记录备忘

热门文章

  1. 忘记无线服务器密码怎么查,忘记自家的wifi密码 教你一招轻松查询
  2. 记一次企业级爬虫系统升级改造(四):爬取微信公众号文章(通过搜狗与新榜等第三方平台)
  3. Android屏幕校准
  4. 项目实践(一)点餐系统概述
  5. SpringBoot 部署: 项目打包 手动部署到阿里云服务器上
  6. 网络流问题:最大流及其算法
  7. 无锡已发放社会保障卡360万张
  8. 汽车电子标识标准呼之欲出
  9. 平面设计师okr_平面设计师
  10. DMA与分区计量管理系统(Axure高保真原型)