天天看點

JS相容性處理

  1. 百度 - 終端适配API

    适合伺服器端使用。POST用戶端傳遞的http頭資訊越多,得到的适配資訊越準确。百度傳回的資料為:

    正确情況:
    {
        device_type :/*1:手機2:pc*/
        os:/*作業系統*/
        os_version:/*作業系統版本*/
        browser:/*浏覽器*/
        browser_version:/*浏覽器版本*/
        model:/*機型*/
        vendor:/*廠商*/
        tn: /*wml|middle|touch|utouch|iphone*/
    }      

    伺服器端代碼可根據傳回的值,來進行自定義判斷,該給用戶端傳回何種資料。

    為防止過度依賴百度判斷,可本地緩存每次用戶端請求頭資料,和百度傳回的值,建立一個KEY、VALUE表,則某種類型用戶端隻要請求一次百度,本地自己的伺服器即可自己判斷了。

  2. 一段巧妙判斷IE浏覽器版本的js代碼

    隻有一行代碼,隻針對IE起作用,而且考慮了IE使用者自選渲染模式、怪癖模式、支援IE5、6、7、8、9及10。
    <html>
    <script>
    var isIE=false;
    /*@cc_on isIE=(document.documentMode||( document.compatMode == "CSS1Compat" ? "XMLHttpRequest" in window ? @_jscript_version*10-50 : 6 : 5)) @*/
    alert(isIE);//非IE彈出False,IE則彈出5到10版本值
    </script>
    </html>      
    最短判斷是否IE的代碼:
    if(-[1,]){
    alert("非IE");
    }else{
    alert("IE");
    }      
    經過測試:IE9、IE10彈出“非IE”。
  3. 實際編碼中,更多的将是采用“對象/特征”來判斷浏覽器能力的方式。
    //添加事件工具函數
    function addEvent(el,type,handle){
        if(el.addEventListener){//for standard browses
            el.addEventListener(type,handle,false);
        }else if(el.attachEvent){//for IE
            el.attachEvent("on"+event,handle);
        }else{//other
            el["on"+type]=handle;
        }
    }      

轉載于:https://www.cnblogs.com/AsionTang/p/3330948.html

繼續閱讀