ie兼容性问题(持续更新)

ie 6 7 JSON 兼容

1、使用jqeury的JSON方法

$.parseJson(json)

2、eval方法

var jsons = req.responseText;  
var s;  
if (typeof(JSON) == 'undefined'){  
     s = eval("("+jsons+")");  
}else{  
     s = JSON.parse(jsons);  
} 

此方法有个小问题,就是会执行里面的js代码
3、引用json.js

<script type="text/JavaScript" src="js/json2.js"></script>

json.js

IE6、IE7兼容querySelectorAll和querySelector方法

if (!document.querySelectorAll) {
    document.querySelectorAll = function (selectors) {
        var style = document.createElement('style'), elements = [], element;
        document.documentElement.firstChild.appendChild(style);
        document._qsa = [];

        style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}';
        window.scrollBy(0, 0);
        style.parentNode.removeChild(style);

        while (document._qsa.length) {
            element = document._qsa.shift();
            element.style.removeAttribute('x-qsa');
            elements.push(element);
        }
        document._qsa = null;
        return elements;
    };
}

if (!document.querySelector) {
    document.querySelector = function (selectors) {
        var elements = document.querySelectorAll(selectors);
        return (elements.length) ? elements[0] : null;
    };
}

当querySelector和querySelectorAll在ie6 7 下未定义的情况,直接重新定义querySelector和querySelectorAll。

兼容ie8 下拉框val()方法

在ie8以上$(“XXX”).val()方法获取的是选中的value,而当ie8及以下的时候获取的是一个数组,$(“XXX”).val()[0]才能获取正确的值。

var clsCodeValue = "";
clsCodeValue = $("#clsCode").val();
clsCodeValue  = typeof clsCodeValue == "object" ? clsCodeValue[0] : clsCodeValue;
clsCodeValue = $.trim(clsCodeValue);  

如果clsCodeValue是数组的话,clsCodeValue的值为clsCodeValue[0]
如果clsCodeValue不是数组的话,clsCodeValue不变

获取浏览器类型的方法

var myBrowser = function() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
    alert(userAgent);
    var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
    var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
    var isSafari = userAgent.indexOf("Safari") > -1; //判断是否Safari浏览器
    if(isIE) {
        var IE5 = IE55 = IE6 = IE7 = IE8 = false;
        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
        reIE.test(userAgent);
        var fIEVersion = parseFloat(RegExp["$1"]);
        IE55 = fIEVersion == 5.5;
        IE6 = fIEVersion == 6.0;
        IE7 = fIEVersion == 7.0;
        IE8 = fIEVersion == 8.0;
        if(IE55) {
            return "IE55";
        }
        if(IE6) {
            return "IE6";
        }
        if(IE7) {
            return "IE7";
        }
        if(IE8) {
            return "IE8";
        }
    } //isIE end
    if(isFF) {
        return "FF";
    }
    if(isOpera) {
        return "Opera";
    }
}
var myBrowser =  myBrowser(); 
if(myBrowser == "FF") {
    alert("我是 Firefox");
}
if(myBrowser == "Opera") {
    alert("我是 Opera");
}
if(myBrowser == "Safari") {
    alert("我是 Safari");
}
if(myBrowser == "IE55") {
    alert("我是 IE5.5");
}
if(myBrowser == "IE6") {
    alert("我是 IE6");
}
if(myBrowser == "IE7") {
    alert("我是 IE7");
}
if(myBrowser == "IE8") {
    alert("我是 IE8");
}
var userAgent = navigator.userAgent,
        rMsie = /(msie\s|trident.*rv:)([\w.]+)/,
        rFirefox = /(firefox)\/([\w.]+)/,
        rOpera = /(opera).+version\/([\w.]+)/,
        rChrome = /(chrome)\/([\w.]+)/,
        rSafari = /version\/([\w.]+).*(safari)/;
    var browser;
    var version;
    var ua = userAgent.toLowerCase();

    function uaMatch(ua) {  
        var match = rMsie.exec(ua);  
        if(match != null) {
            return {
                browser: "IE",
                version: match[2] || "0"
            };  
        }  
        var match = rFirefox.exec(ua);  
        if(match != null) {
            return {
                browser: match[1] || "",
                version: match[2] || "0"
            };  
        }  
        var match = rOpera.exec(ua);  
        if(match != null) {
            return {
                browser: match[1] || "",
                version: match[2] || "0"
            };  
        }  
        var match = rChrome.exec(ua);  
        if(match != null) {
            return {
                browser: match[1] || "",
                version: match[2] || "0"
            };  
        }  
        var match = rSafari.exec(ua);  
        if(match != null) {
            return {
                browser: match[2] || "",
                version: match[1] || "0"
            };  
        }  
        if(match != null) {
            return {
                browser: "",
                version: "0"
            };  
        }
    }
    var browserMatch = uaMatch(userAgent.toLowerCase());
    if(browserMatch.browser) {  
        browser = browserMatch.browser;  
        version = browserMatch.version;
    }
    alert(browser + version)

datase兼容性问题

var script = document.createElement('script');
if (script.dataset){
    script.dataset.aaBb = 'loading';
} else {
    script.setAttribute('data-aa-bb','loading');
}
//注意使用dataset的时候是驼峰,用setAttribute的时候用-
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值