//获取事件对象,处理兼容性
浏览器中的事件都是以对象的形式存在,IE和标准DOM之间在捕获事件对象时有区别。在IE的事件对象window对象中的一个属性event,访问时采用如下方法
ps.onclick = function(){
var oEvent = window.event;
}
尽管window的对象属性event存在,但是只能在事件发生时访问,所以事件函数执行结束后,该对象消失。
标准DOM规定event对象必须作为唯一的参数传给事件处理函数,因此在这些浏览器中访问事件对象时通常将其作为参数。
ps.onclick = function(e){
}
为了兼容两种浏览器
ps.onclick = function(e){
if(window.event)e=window.event;
}
if(window.event).oEvent = window.event;
//获取事件目标,处理兼容性
var oTarget;
if(oEvent.srcElement)
oTarget = oEvent.srcElement;
else
oTarget=oEvent.target;
前者针对IE,后者针对标准DOM。
主要因为事件目标的属性在两类浏览器上的不同。
+++++++++++++++++++++++++++++
键盘事件
对于键盘事件,最重要的不是事件名称,而是所按的是什么键。
由于IE没有charCode属性,而keyCode只有在keyup和keydown事件时才与标准的DOM浏览器keyCode相同,在keypress事件中等同于charCode(不存在)。
//为了处理IE兼容性,通常采用如下代码
oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode:0;