zoukankan      html  css  js  c++  java
  • 客户端检测

    1. 能力检测

    function getElement(id){
        if (document.getElementById){
            return document.getElementById(id);
        } else if (document.all){
            return document.all[id];
        } else {
            throw new Error("No way to retrieve element!");
        }
    }
    

    1.1 更可靠的能力检测

    //不要这样做!这不是能力检测——只检测了是否存在相应的方法
    function isSortable(object){
        return !!object.sort;
    }
    
    //这样更好:检查 sort 是不是函数
    function isSortable(object){
        return typeof object.sort == "function";
    }
    
    //在 IE 中会导致错误
    var xhr = new ActiveXObject("Microsoft.XMLHttp");
    if (xhr.open){ //这里会发生错误
        //执行操作
    }
    
    //作者: Peter Michaux
    function isHostMethod(object, property) {
        var t = typeof object[property];
        return t=='function' ||
        (!!(t=='object' && object[property])) ||
        t=='unknown';
    }
    result = isHostMethod(xhr, "open"); //true
    result = isHostMethod(xhr, "foo"); //false
    

    1.2 能力检测,不是浏览器检测

    //确定浏览器是否支持 Netscape 风格的插件
    var hasNSPlugins = !!(navigator.plugins && navigator.plugins.length);
    //确定浏览器是否具有 DOM1 级规定的能力
    var hasDOM1 = !!(document.getElementById && document.createElement &&
                                 document.getElementsByTagName);
    
    • 在实际开发中,应该将能力检测作为确定下一步解决方案的依据,而不是用它来判断用户使用的是什么浏览器。

    2. 怪癖检测

    3. 用户代理检测

    3.1 用户代理字符串的历史

    3.2 用户代理字符串检测技术

    3.3 完整的代码

    3.4 使用方法

    • 用户代理检测是客户端检测的最后一个选择。只要可能,都应该优先采用能力检测和怪癖检测。
    • 用户代理检测一般适用于下列情形:
    1. 不能直接准确地使用能力检测或怪癖检测。
      例如,某些浏览器实现了为将来功能预留的存根(stub)函数。
      在这种情况下,仅测试相应的函数是否存在还得不到足够的信息。
    2. 同一款浏览器在不同平台下具备不同的能力。这时候,可能就有必要确定浏览器位于哪个平台下。
    3. 为了跟踪分析等目的需要知道确切的浏览器。
  • 相关阅读:
    HTML连载29-div和span标签
    Java连载14-补码简介&浮点型整数
    Java连载13-整数型字面值的强制转换
    Java连载12-继承开发环境&long类型
    [Python] tkinter 之 Listbox & Combobox
    [Python] Tkinter command
    [java] 转型
    [Python] execl读写
    [c++] 细节
    [刷题] PTA 7-64 最长对称子串
  • 原文地址:https://www.cnblogs.com/huoteng/p/4963608.html
Copyright © 2011-2022 走看看