Event对象
一、定义
Event对象只在事件发生时创建,且可被事件处理程序访问。在所有事件处理程序执行完成后,event对象就被销毁。
(注意:IE和DOM按照两种不同的方式实现event对象)
二、定位
(一)IE浏览器
- IE浏览器中,event对象是window对象的一个属性。
- Event是window对象的一个属性,只在事件发生时才访问。所有事件处理程序结束,event对象就销毁。
(二)DOM
- event只能作为仅有的参数传给事件处理程序
综合以上两点:
要正确使用event对象,首先需要判断浏览器是IE还是DOM兼容的浏览器。
三、属性和方法
四、两种event对象
(一)相同点
- 获取事件类型
使用var sType = oEvent.type;
返回值诸“click” “mouseover”等值,这个属性type属性在一个函数被用于两个不同事件的事件处理程序时是有用的。
- 获取键盘代码
keydown或者keyup事件期间,可用keyCode属性获取按键代码。keyCode属性总是包含一个代表按键的代码。
- 检测Shift ,Alt ,Ctrl
检测Shift ,Alt ,Ctrl 是否被按下,IE和DOM中可以采用如下方式:
Var bShift = oEvent.shiftKey;
Var bAlt = oEvent.atKey;
Var bCtrl = oEvent.crl Key;
这些属性的每一个都返回一个布尔值,指示该键是否被按下。这些键同时也触发keydown事件,从而得到keyCode
- 获取客户区坐标
鼠标事件期间,通过clientX和clienY属性告诉我们鼠标的位置离该区域边缘的距离。
- 获取屏幕坐标
鼠标事件期间,通过screenX和screenY属性,获取鼠标指针相对于计算机屏幕的位置。
(二)不同点
- 获取目标
IE的目标只能是元素、document或者window;而DOM兼容浏览器的目标同时可以准许文本节点成为目标。
- 获取字符码
IE的keyCode属性返回该字符的字符码。
DOM兼容的浏览器中,按键代码和字符代码分离。
- 阻止事件的默认行为
IE中,阻止默认事件行为,returnValue属性设置为false:
oEvent.returnValue = false;
Mozilla中,调用.preventDefault():
oEvent.preventDefault();
- 中止事件传播(冒泡)
IE中,阻止事件冒泡,需cancelBubble属性设为true
oEvent.cancelBubble = true;
Mozilla中,调用stopPropagation():
oEvent.stopPropagation();