IE firefox 兼容性整理

1、尽量用jquery操作。

2、jquery取值时要用准确的方法,attr(), val(), text(), html(). 

例如: <span value="a">test</span> 取value属性值,ie下  $("span").val()可以,ff下就有问题。标准写法$("span").attr("value");

3、firefox 下最好不要直接用class筛选器,尤其是大量dom的页面,最好有多个限制,例如:$("#id .classname").val()

4、获取事件方法:

IE:window.event    FireFox:arguments.callee.caller.arguments[0]

var e = window.event || arguments.callee.caller.arguments[0];
var srcElement = event.srcElement ? event.srcElement : event.target

 

如果是方法里又调用方法,最里层的方法要根据event事件处理的话。用上边方法就不行了。

用如下方法:

function getEvent() //同时兼容ie和ff的写法 
{  
    if(document.all)  return window.event;    
    func=getEvent.caller;        
    while(func!=null){  
        var arg0=func.arguments[0]; 
        if(arg0) 
        { 
            if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
            {  
            return arg0; 
            } 
        } 
        func=func.caller; 
    } 
    return null; 
} 

5、阻止冒泡事件:

function stopEvent() {
    //var e = window.event || arguments.callee.caller.arguments[0];
    var e = getEvent();
    //如果提供了事件对象,则这是一个非IE浏览器
    if (e && e.preventDefault) {
        //阻止默认浏览器动作(W3C) 
        e.preventDefault();
    }
    else {
        //IE中阻止函数器默认动作的方式
        window.event.returnValue = false;
    }
//    if (e && e.stopPropagation) {
//        // this code is for Mozilla and Opera
//        e.stopPropagation();
//    } else if (window.event) {
//        // this code is for IE 
//        window.event.cancelBubble = true;
//    }
}

6、监听事件

IE

document.body.attachEvent('onclick', functionname);

Firefox

document.body.addEventListener('click', functionname,false);

 =============================================================

chrome 兼容性

1、var event=arguments.callee.caller.arguments[0]||window.event;//消除浏览器差异

posted @ 2016-06-14 18:19  fo0ol  阅读(170)  评论(0编辑  收藏  举报