第八章

客戶端檢測(cè)

  1. 能力檢測(cè)
    1. 先檢測(cè)達(dá)到目的的最常用的特性。
    2. 必須檢測(cè)實(shí)際要用到的特性。
    3. 盡可能的使用typeof進(jìn)行能力檢測(cè)。對(duì)所有DOM方法都返回"function"。
    4. 如果知道自己的應(yīng)用程序需要使用某些特定的瀏覽器特性,最好是一次性檢測(cè)所有相關(guān)特性,而不是分開檢測(cè)。
  2. 怪癖檢測(cè)
    1. 識(shí)別瀏覽器的特殊行為,即想要知道瀏覽器存在什么缺陷。
    2. 建議僅檢測(cè)那些有直接影響的瀏覽器怪癖,且最好在腳本一開始就執(zhí)行此類檢測(cè)。
  3. 用戶代理檢測(cè)
    1. 通過檢測(cè)用戶代理字符串來確定實(shí)際使用的瀏覽器。在每一次HTTP請(qǐng)求過程中,用戶代理字符串是作為相應(yīng)首部發(fā)送的,且該字符粗可以通過JavaScript的navigator.userAgent屬性訪問到。
    2. 在服務(wù)器端,通過檢測(cè)用戶代理字符串來確定用戶使用的的瀏覽器是常用且能接受的做法。
    3. 在客戶端,用戶代理檢測(cè)排在能力檢測(cè)和怪癖檢測(cè)之后。
    4. 每個(gè)瀏覽器的用戶代理字符串都不盡相同,所以要分開識(shí)別。
  4. 用戶代理字符串檢測(cè)技術(shù)
    1. 識(shí)別呈現(xiàn)引擎
      1. Firefox,chrome和Netscape使用相同版本的GecKo,那么它們一定支持相同的特性。
      2. 不管什么瀏覽器,只要它和Safari3使用相同版本的WebKit,那么該瀏覽器就和Safari3有相同的功能。
      3. 所以,編寫的腳本主要檢測(cè)五大呈現(xiàn)引擎:Gecko,WbbKit,KHTML,IE和Opera。
      4. 檢測(cè)順序
        1. Opera。檢測(cè)window.opera對(duì)象,調(diào)用version()方法可以返回一個(gè)表示瀏覽器版本的字符串。
        2. WebKit。檢測(cè)其用戶代理字符串中的"AppleWebKit"。
        3. KHTML。KHTML的版本號(hào)與后繼的標(biāo)記之間有一個(gè)空格,所以要使用特殊的非空格字符來取得與版本號(hào)相關(guān)的所有字符。如果KHMTL不在用戶代理中,就要匹配Konqueror后跟一個(gè)斜杠,再后跟不包含分號(hào)的所有字符。
        4. Gecko。在用戶代理中,其版本號(hào)不會(huì)出現(xiàn)在字符串Gecko后面,而是出現(xiàn)在字符串"rv:"后。
        5. IE。其版本號(hào)位于字符串"MSIE"的后面,一個(gè)分號(hào)的前面。
    2. 識(shí)別瀏覽器
    3. 識(shí)別平臺(tái)
      1. 主流大三平臺(tái):windows,Mac,Unix(包含各種Linux)
      2. 使用navigator.platform,其屬性值在不同的瀏覽器中都是一致的。其屬性值有"Win32","Win64","MacPPC","MacIntel","Xll","Linux i686"。
    4. 識(shí)別windows系統(tǒng)
    5. 識(shí)別移動(dòng)設(shè)備
    6. 識(shí)別游戲系統(tǒng)

小結(jié)

能力檢測(cè):在編寫代碼之前先檢測(cè)特定瀏覽器的能力。比如,腳本在調(diào)用某個(gè)函數(shù)之前,可能要先檢測(cè)函數(shù)時(shí)候存在。這種檢測(cè)方法將開發(fā)人員從考慮具體的瀏覽器類型和版本中解放出來,讓他們把注意力集中到相應(yīng)的能力是否存在上面。能力檢測(cè)無法檢測(cè)出特定的瀏覽器和版本。
怪癖檢測(cè):怪癖實(shí)際上是瀏覽器中存在的bug。怪癖檢測(cè)通常涉及到運(yùn)行一小段代碼,然后確定瀏覽器是否存在某個(gè)bug。怪癖檢測(cè)無法檢測(cè)出特定的瀏覽器和版本。
用戶代理檢測(cè):通過用戶代理字符串來識(shí)別瀏覽器。用戶代理字符串中包含大量與瀏覽器有關(guān)的信息,包括瀏覽器,平臺(tái),操作系統(tǒng),以及瀏覽器版本。有些瀏覽器會(huì)在用戶代理中添加一些欺騙性信息,欺騙網(wǎng)站相信自己是另一種瀏覽器。用戶代理檢測(cè)需要特殊技巧,特別要注意Opera瀏覽器會(huì)隱瞞其用戶代理字符串的情況。
綜上:優(yōu)先考慮能力檢測(cè),怪癖檢測(cè)是確定應(yīng)該如何處理代碼的第二選擇,最后才使用用戶代理檢測(cè)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • location location.href和 window.location的作用一樣,都新打開一個(gè)url在歷史...
    辣子_閱讀 336評(píng)論 0 0
  • 1、JavaScript簡(jiǎn)介 1.1、發(fā)展歷程 》 1992年:Nombas公司開發(fā)C-minus-minus(...
    TerryLiu05閱讀 202評(píng)論 0 0
  • Windows對(duì)象全局作用域全局作用域中聲明的變量,函數(shù)和方法都會(huì)變成windows的屬性和方法窗口關(guān)系及框架每個(gè)...
    27億光年中的小小塵埃閱讀 63評(píng)論 0 0
  • 1.BOM的核心對(duì)象是window對(duì)象,他表示瀏覽器的一個(gè)實(shí)例 2.全局變量不能通過delete操作符刪除 3.窗...
    shirley_liang閱讀 431評(píng)論 0 0
  • 8 管理支付和訂單 在上一章中,你創(chuàng)建了一個(gè)包括商品目錄和訂單系統(tǒng)的在線商店。你還學(xué)習(xí)了如何用Celery啟動(dòng)異步...
    lakerszhy閱讀 2,442評(píng)論 1 4

友情鏈接更多精彩內(nèi)容