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);

 

posted on 2012-09-17 18:02  小落落  阅读(148)  评论(0编辑  收藏  举报