zoukankan      html  css  js  c++  java
  • js识别不同浏览器

    检測浏览器。注意浏览器推断顺序,主要是基于userAgent做推断。

    //检測浏览器

    var client = function(){
        var engine = {
            ie:0,
            gecko:0,
            webkit:0,
            khtml:0,
            opera:0,
            ver:null
        };
        var browser = {
            //浏览器
            ie: 0,
            firefox: 0,
            safari: 0,
            konq: 0,
            opera: 0,
            chrome: 0,
            ver:null
        };
        var ua = navigator.userAgent;
        //浏览器检測有顺序
        if(window.opera){//opera伪装,所以优先检測
            engine.ver = browser.ver = window.opera.version();
            engine.opera = browser.opera = parseFloat(engine.ver);
        } else if(/AppleWebKit/(S+)/.test(ua)){
            engine.ver = RegExp["$1"];
            engine.webkit = parseFloat(engine.ver);


            //确定是 Chrome 还是 Safari
            if (/Chrome/(S+)/.test(ua)){
                browser.ver = RegExp["$1"];
                browser.chrome = parseFloat(browser.ver);
            } else if (/Version/(S+)/.test(ua)){
                browser.ver = RegExp["$1"];
                browser.safari = parseFloat(browser.ver);
            } else {
                //近似地确定版本
                var safariVersion = 1;
                if (engine.webkit < 100){
                    safariVersion = 1;
                } else if (engine.webkit < 312){
                    safariVersion = 1.2;
                } else if (engine.webkit < 412){
                    safariVersion = 1.3;
                } else {
                    safariVersion = 2;
                }


                browser.safari = browser.ver = safariVersion;
            }




        }else if (/KHTML/(S+)/.test(ua) || /Konqueror/([^;]+)/.test(ua)){
            engine.ver = browser.ver = RegExp["$1"];
            engine.khtml = browser.konq = parseFloat(engine.ver);
        }else if (/rv:([^)]+)) Gecko/d{8}/.test(ua)){
            engine.ver = RegExp["$1"];
            engine.gecko = parseFloat(engine.ver);
            //确定是不是 Firefox
            if (/Firefox/(S+)/.test(ua)){
                browser.ver = RegExp["$1"];
                browser.firefox = parseFloat(browser.ver);
            }
        }else if (/MSIE ([^;]+)/.test(ua)){
            engine.ver = browser.ver = RegExp["$1"];
            engine.ie = browser.ie = parseFloat(engine.ver);
        }
        return {
            engine:engine,
            browser: browser
        };
    }();


    //调用

    if (client.engine.webkit) { //if it’s WebKit 
     if (client.browser.chrome){ 
     //运行针对 Chrome 的代码 
     } else if (client.browser.safari){ 
     //运行针对 Safari 的代码 
     } 
    } else if (client.engine.gecko){ 
     if (client.browser.firefox){ 
     //运行针对 Firefox 的代码 
     } else { 
     //运行针对其它 Gecko 浏览器的代码 
     } 

  • 相关阅读:
    C++ 字符串与数字之间的转换
    两种常见的模式匹配算法(代码实现)
    C++ string整行读取带空格的字符串
    JavaEE(一)开发环境搭建(JDK+Eclipse+Tomcat+Mysql+Spring)
    25java模拟容器的实现
    24java的StringBuilder类和StringBuffer类
    23java的String类常用方法
    22java的回调&内部类
    21java的抽象类和接口
    20java的组合&IDEA踩坑合集1
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7251833.html
Copyright © 2011-2022 走看看