• js之客户端检测


    1 能力检测
    判断是否有某个属性或方法,例:在低版本中的opera浏览器中,window下有个opera属性

    if (window.opera) {
        alert("opera");
    }

    2 怪癖检测
    通常是浏览器存在某种bug导致的,例:ie9-中如果对象有成员方法toString,则在在for-in中不会被遍历到
    这种检测可能会因为bug在高版本中被修复而失效

    var testObj = new Object();
    testObj.toString = function() {
        return "testObje";
    };
    for (var p in testObj) {
        if (p == "toString") {
            alert("这是非ie浏览器");
        }
    }

    3 userAgent检测
    这是最后使用的方法,通过navigator.userAgent可以检测出浏览器的大部分信息
    但由于浏览器的userAgent也不是固定不变的,所以这个方法也不是最安全的
    例:opera在16-版本前使用引擎为Presto,后面使用AppleWebKit

    function TestNavigator() {
        var ua = navigator.userAgent;
        var engine = {
            ie: false,
            firefox: false,
            safari: false,
            chrome:false,
            opera: false,
            ver: ""
        };
        if (window.opera) {
            engine.opera = true;
            engine.ver = window.opera.version();
        } else if (ua.indexOf("AppleWebKit") != -1) {
            if (/OPR/(S+)/.test(ua)) {
                engine.opera = true;
                engine.ver = RegExp["$1"];
            } else if(/Chrome/(S+)/.test(ua)) {
                engine.chrome = true;
                engine.ver = RegExp["$1"];
            } else if (/Version/(S+)/.test(ua)) {
                engine.safari = true;
                engine.ver = RegExp["$1"];
            }
        } else if(/Firefox/(S+)/.test(ua)) {
            engine.firefox = true;
            engine.ver = RegExp["$1"];
        } else if (/MSIE ([^;])/.test(ua)) {
            engine.ie = true;
            engine.ver = RegExp["$1"];
        }
        return engine;
    }

    4 使用browserdetect.js等js插件来判断,支持比较完善

  • 相关阅读:
    gitbook
    Goland IDE使用
    go-zero RPC 框架安装 (goctl安装, protoc安装, etcd安装)
    go 打包部署
    GO redis
    go 常见异常
    go 异常处理
    go常用数据处理 (json, map, 结构体)
    Kafka日志消息
    【leetcode_easy_math】1317. Convert Integer to the Sum of Two No-Zero Integers
  • 原文地址:https://www.cnblogs.com/mu-mu/p/3394177.html
Copyright © 2020-2023  润新知