客戶端檢測

前端開發中,在呈現引擎、瀏覽器、平臺、操做系統、引動設備、遊戲系統存在差別的狀況下,咱們的代碼會出現不少不兼容問題。前端

而,客戶端檢測,就是分辨上述6個種類的方法,進而可使咱們針對不一樣的狀況運行不一樣的代碼。可是客戶端檢測是很是麻煩的,這毫不是第一個考慮的方式。android

具體的客戶端檢測,能夠在JavaScript高級編程設計的  客戶端檢測 這一章獲得認真的解析,包括方法。也能夠在網上搜索。不過多介紹。ios

咱們平時開發中,爲了寫出兼容的代碼,客戶端檢測用的絕對不是最多的,它常常是排到最後一位來使用,也就是完全沒辦法的時候才用。web

下面來講一下,其它的優先級比較高的檢測方式。chrome

一、能力檢測:編程

咱們能夠判斷一個方法是否能用,或者一個方法是否存在,而後再使用這些方法,這樣就不會出現錯誤。也就是先檢測有沒有這項能力。windows

二、怪癖檢測:它的目標是 識別瀏覽器的特殊行爲,如IE8更早版本,存在一個bug,某個實例屬性與[[Enumerable]]標記爲false的某個原型屬性同名,那麼該實例屬性將不會出如今for-in循環中。能夠yoga以下代碼來檢測;瀏覽器

    var hasDontEnumQuirk = function(){
        var o = { toString:function(){} };
        for ( var prop in o){
            if(prop == "toString"){
                return false;
            }
        }
        return true;
    }();
    //此代碼 就能夠檢測 存不存在這種怪癖

從而能夠針對這種狀況寫一些兼容代碼;iphone

而在前兩種方法都解決不了兼容性的狀況下,咱們才採用  客戶端檢測  ,ui

肯定是什麼引擎(opera、webkit、KHTML、Gecko、IE);

肯定是什麼瀏覽器:chrome、opera、konq、safari、firefox、IE;

肯定是什麼平臺:win(windows)、mac、xll(Unix);

肯定是什麼操做windows系統:"2000"、"XP"、"Vista"、"7"、"NT"、"ME"、RegExp["$1"];

肯定是什麼移動設備:iphone、ipod、ios、android、nokiaN、winMobile;

肯定是什麼遊戲系統:wii、ps

當咱們檢測出這些信息後,就能夠根據不一樣狀況寫兼容代碼了,不過這種方法,不到萬不得已,不推薦使用。

相關文章
相關標籤/搜索