zoukankan      html  css  js  c++  java
  • 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插件来判断,支持比较完善

  • 相关阅读:
    Lyft Level 5 Challenge 2018
    Codeforces Round #514 (Div. 2)题解
    Bubble Cup 11
    不如来搞一下CDQ分治吧!
    Codeforces Round #331 (Div. 2)
    写一下中国剩余定理的证明
    codeforces Round#332Div2 题解
    GCPC2017 题解
    2017 USP Try-outs 题解
    CodeForce 387D. George and Interesting Graph
  • 原文地址:https://www.cnblogs.com/mu-mu/p/3394177.html
Copyright © 2011-2022 走看看