javascript 一些兼容性的处理
一:事件监听
function addEventHandler(target,type,func){ if(target.addEventListener){ target.addEventListener(type,func,false); }else if(target.attchEvent){ target.attachEvent('on' + type,func); } else target['on' + type] = func; }
说明:target 为文档结点、 document、 window、 XMLHttpRequest
type为字符串,事件名称,不含“on”,如“click、mouseover”等。
func为执行函数
addEventListener支持标准dom浏览器
attchEvent支持IE
二:window.event问题
问题说明:window.event 只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用。
解决方法:在事件发生的函数上加上event参数,在函数体内(假设形参为evt)使用 var myEvent = evt?evt:(window.event?window.event:null)。
三:捕获当前事件作用的对象
obj = event.srcElement?event.srcElement:event.target;
与之相关的还有e.relatedTarget,这怎么用呢?举例来说:
在IE中,当发生mouseover事件的时候,e.srcElement可以获得鼠标移入的元素,e.fromElement可以获得鼠标是从哪个元素移入的,e.toElement就是e.srcElement;
在IE中,当发生mouseout事件的时候,e.srcElement可以获得鼠标移出的元素,e.fromElement和e.srcElement是一样的,e.toElement可以获得鼠标移动到当前的元素;
在DOM中(非ie),mouseover和mouseout所发生的元素可以通过e.target来访问,相关元素是通过 e.relatedTarget来 访问的(在mouseover中相当于IE的e.fromElement,在mouseout中相当于IE的e.toElement);