zoukankan      html  css  js  c++  java
  • js+jquery检测用户浏览器型号(包括对360浏览器的检测)

      做网站,js检测用户浏览器的版本,是经常要使用到,今天自己写了一个js,完成了对于一些常见浏览器的检测,但是,偏偏对于360浏览器的检测没有任 何办法,研究了一会儿,无果。无论是360安全浏览器,还是360极速浏览器,在极速模式下面,都只能检测到用户是使用的谷歌浏览器。后来在网上找了很 久,看了很多大神的帖子,结合了自己的想法,写出了下面的解决办法:

       这是 BrowserCheck.html页面显示文件:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>浏览器检测</title>
    </head>
    <script>
    window.    browserCheck();
    }
    </script>
    <script src="jquery.min.js"></script>
    <script src="latest.js"></script>
    <script src="check.js"></script>
    <body>
    </body>
    </html>

       这是Check.js显示文件,用来打印用户浏览器的版本号:

    function browserCheck(){
        var userAgent = navigator.userAgent,
        rMsie = /(msies|trident.*rv:)([w.]+)/,
        rFirefox = /(firefox)/([w.]+)/,
        rOpera = /(opera).+version/([w.]+)/,
        rChrome = /(chrome)/([w.]+)/,
        rSafari = /version/([w.]+).*(safari)/;
        var browser;
        var version;
        var ua = userAgent.toLowerCase();
        function uaMatch(ua) {
        var match = rMsie.exec(ua);
        if (match != null){
            return { browser : "IE", version : match[2] || "0" };
        }
        var match = rFirefox.exec(ua);
        if (match != null) {
            return { browser : match[1] || "", version : match[2] || "0" };
        }
        var match = rOpera.exec(ua);
        if (match != null) {
            return { browser : match[1] || "", version : match[2] || "0" };
        }
        var match = rChrome.exec(ua);
        if (match != null) {
            return { browser : match[1] || "", version : match[2] || "0" };
        }
        var match = rSafari.exec(ua);
        if (match != null) {
            return { browser : match[1] || "", version : match[2] || "0" };
        }
        if (match != null) {
            return { browser : "", version : "0" };
        }
                    }
        var browserMatch = uaMatch(userAgent.toLowerCase());
        if (browserMatch.browser) {
            browser = browserMatch.browser;
            version = browserMatch.version;
        }
        var i=0;
        var s = $.ua().is360se;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用360安全浏览器Chrome内核,内核版本号:"+version);
            i=1;
        }
        var s = $.ua().is360ee;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用360极速浏览器Chrome内核,内核版本号:"+version);
            i=1;
        }
        var s = $.ua().isChrome;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用谷歌浏览器(原版),内核版本号:"+version);
            i=1;
        }
        var s = $.ua().isLiebao;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用猎豹浏览器chrome内核,内核版本号:"+version);
            i=1;
        }
        var s = $.ua().isLiebao;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用猎豹浏览器chrome内核,内核版本号:"+version);
            i=1;
        }
        var s = $.ua().isSougou;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用搜狗浏览器chrome内核,内核版本号:"+version);
            i=1;
        }
        var s1 = $.ua().isIe;
        if(s1==true){
            var s2 = $.ua().ie;
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用IE浏览器,内核版本号:"+version);
            if(s2<8){
            alert("用户浏览器版本检测——by Mona_侠快:您使用的浏览器在IE8.0以下,为了您获得良好的上网体验,强烈建议您升级您的IE,或者使用360安全浏览器!");
            }
            i=1;
        }
        var s = $.ua().isFirefox;;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用firefox浏览器,内核版本号:"+version);
            i=1;
        }
        var s = $.ua().isMobile;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用手机版浏览器");
            i=1;
        }
        var s = $.ua().isTablet;
        if(s==true){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用平板浏览器");
            i=1;
        } 
        if(i==0){
            document.write("用户浏览器版本检测——by Mona_侠快:你正在使用的是"+browser+"浏览器"+"内核版本号:"+version);
        }
    }
    // JavaScript Document

    其中有一个jquery插件jquery.min.js,请到附件中下载^_^!

       附件中包含了这几个文件。

       这个latest.js是用来检测浏览器版本的:

    /**
     * 1. 获取ua字符串
     * $.ua().ua;
     *
     * 2. 设置ua字符串
     * $.ua("string");
     *
     * 3. 获取参数
     * $.ua().platform;
     * $.ua().browser;
     * $.ua().engine;
     *
     * 4. 内核判断
     * $.ua().isWebkit;
     * $.ua().isGecko;
     * $.ua().isTrident;
     *
     * 4. 外壳判断
     * $.ua().isChrome;
     * $.ua().isFirefox;
     * $.ua().is360se;
     * $.ua().is360ee;
     * $.ua().isLiebao;
     * $.ua().isSougou;
     * $.ua().ie;
     * $.ua().isIe;
     * $.ua().isIe6;
     * $.ua().isIe7;
     * $.ua().isIe8;
     * $.ua().isIe9;
     * $.ua().isIe10;
     * $.ua().isIe11;
     */
    ;
    (function ($, win, undefined) {
        var UA = win.navigator.userAgent,
            doc = win.document,
            parseRule = {
                platforms: [
                    // windows phone
                    {
                        name: 'windows phone',
                        versionSearch: 'windows phone os ',
                        versionNames: [ // windows phone must be tested before win
                            {
                                number: '7.5',
                                name: 'mango'
                            }
                        ]
                    },
                    // windows
                    {
                        name: 'win',
                        slugName: 'windows',
                        versionSearch: 'windows(?: nt)? ',
                        versionNames: [{
                            number: '6.2',
                            name: 'windows 8'
                        }, {
                            number: '6.1',
                            name: 'windows 7'
                        }, {
                            number: '6.0',
                            name: 'windows vista'
                        }, {
                            number: '5.2',
                            name: 'windows xp'
                        }, {
                            number: '5.1',
                            name: 'windows xp'
                        }, {
                            number: '5.0',
                            name: 'windows 2000'
                        }]
                    },
                    // ipad
                    {
                        name: 'ipad',
                        versionSearch: 'cpu os ',
                        flags: ['ios']
                    },
                    // ipad and ipod must be tested before iphone
                    {
                        name: 'ipod',
                        versionSearch: 'iphone os ',
                        flags: ['ios']
                    },
                    // iphone
                    {
                        name: 'iphone',
                        versionSearch: 'iphone os ',
                        flags: ['ios']
                    },
                    // iphone must be tested before mac
                    {
                        name: 'mac',
                        versionSearch: 'os x ',
                        versionNames: [{
                            number: '10.8',
                            name: 'mountainlion'
                        }, {
                            number: '10.7',
                            name: 'lion'
                        }, {
                            number: '10.6',
                            name: 'snowleopard'
                        }, {
                            number: '10.5',
                            name: 'leopard'
                        }, {
                            number: '10.4',
                            name: 'tiger'
                        }, {
                            number: '10.3',
                            name: 'panther'
                        }, {
                            number: '10.2',
                            name: 'jaguar'
                        }, {
                            number: '10.1',
                            name: 'puma'
                        }, {
                            number: '10.0',
                            name: 'cheetah'
                        }]
                    },
                    // android
                    {
                        name: 'android',
                        versionSearch: 'android ',
                        versionNames: [
                            // android must be tested before linux
                            {
                                number: '4.1',
                                name: 'jellybean'
                            }, {
                                number: '4.0',
                                name: 'icecream sandwich'
                            }, {
                                number: '3.',
                                name: 'honey comb'
                            }, {
                                number: '2.3',
                                name: 'ginger bread'
                            }, {
                                number: '2.2',
                                name: 'froyo'
                            }, {
                                number: '2.',
                                name: 'eclair'
                            }, {
                                number: '1.6',
                                name: 'donut'
                            }, {
                                number: '1.5',
                                name: 'cupcake'
                            }
                        ]
                    },
                    // blackberry
                    {
                        name: 'blackberry',
                        versionSearch: '(?:blackberry\d{4}[a-z]?|version)/'
                    },
                    // blackberry
                    {
                        name: 'bb',
                        slugName: 'blackberry',
                        versionSearch: '(?:version)/'
                    },
                    // blackberry
                    {
                        name: 'playbook',
                        slugName: 'blackberry',
                        versionSearch: '(?:version)/'
                    },
                    // linux
                    {
                        name: 'linux'
                    },
                    // nokia
                    {
                        name: 'nokia'
                    }
                ],
                browsers: [{
                        name: 'iemobile',
                        versionSearch: 'iemobile/'
                    }, // iemobile must be tested before msie
                    {
                        name: 'msie',
                        slugName: 'ie',
                        versionSearch: 'msie '
                    }, {
                        name: 'firefox',
                        versionSearch: 'firefox/'
                    }, {
                        name: 'chrome',
                        versionSearch: 'chrome/'
                    }, // chrome must be tested before safari
                    {
                        name: 'safari',
                        versionSearch: '(?:browser|version)/'
                    }, {
                        name: 'opera',
                        versionSearch: 'version/'
                    }
                ],
                engines: [{
                        name: 'trident',
                        versionSearch: 'trident/'
                    }, {
                        name: 'webkit',
                        versionSearch: 'webkit/'
                    }, // webkit must be tested before gecko
                    {
                        name: 'gecko',
                        versionSearch: 'rv:'
                    }, {
                        name: 'presto',
                        versionSearch: 'presto/'
                    }
                ]
            },
            // [10,)版本就无法判断
            ieVer = (function () {
                var v = 3,
                    p = doc.createElement('p'),
                    all = p.getElementsByTagName('i');
                while (
                    p.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
                    all[0]);
                return v > 4 ? v : 0;
            }()),
            ieAX = win.ActiveXObject,
            ieMode = doc.documentMode,
            isIe = ieAX || ieMode,
            isIe6 = (ieAX && ieVer == 6) || (ieMode == 6),
            isIe7 = (ieAX && ieVer == 7) || (ieMode == 7),
            isIe8 = (ieAX && ieVer == 8) || (ieMode == 8),
            isIe9 = (ieAX && ieVer == 9) || (ieMode == 9),
            isIe10 = ieMode === 10,
            isIe11 = ieMode === 11,
            isChrome = !isIe && _mime("type", "application/vnd.chromium.remoting-viewer"),
            isLiebao = !isIe && !! win.external && !! win.external.LiebaoAutoFill_CopyToClipboard,
            is360ee = !isIe && !isChrome && !isLiebao && _plugins("filename", "pepflashplayer.dll"),
            is360se = !isIe && !is360ee && _mime("suffixes", "dll", "description", /fancy/),
            isSougou = !isIe && _plugins("filename", "NPComBrg310.dll"),
            isFirefox = win.scrollMaxX !== undefined;
        if (isIe6) {
            ieVer = 6;
        } else if (isIe7) {
            ieVer = 7;
        } else if (isIe8) {
            ieVer = 8;
        } else if (isIe9) {
            ieVer = 9;
        } else if (isIe10) {
            ieVer = 10;
        } else if (isIe11) {
            ieVer = 11;
        }
        $.extend({
            ua: function () {
                var args = arguments,
                    argL = args.length,
                    ua = (argL == 1 && $.type(args[0]) == "string" ? args[0] : UA).toLowerCase(),
                    objPlatform = _parse(parseRule.platforms, ua),
                    objBrowser = _parse(parseRule.browsers, ua, true),
                    objEngine = _parse(parseRule.engines, ua);
                return {
                    // 返回ua字符串
                    ua: ua,
                    // 操作平台
                    platform: $.extend({}, objPlatform, {
                        os: win.navigator.platform.toLowerCase(),
                        plugins: win.navigator.plugins
                    }),
                    // 浏览器内核
                    engine: objEngine,
                    // 浏览器外壳
                    browser: objBrowser,
                    // ie
                    isIe: !! ieVer,
                    isIe6: isIe6,
                    isIe7: isIe7,
                    isIe8: isIe8,
                    isIe9: isIe9,
                    isIe10: isIe10,
                    isIe11: isIe11,
                    ie: ieVer,
                    // 内核
                    isWebkit: !! objEngine.isWebkit,
                    isGecko: !! objEngine.isGecko,
                    isTrident: !! objEngine.isTrident,
                    // 外壳[优先特征判断]
                    isChrome: isChrome,
                    is360ee: is360ee,
                    is360se: is360se,
                    isSougou: isSougou,
                    isLiebao: isLiebao,
                    isFirefox: isFirefox,
                    // 类型
                    isMobile: objPlatform.isMobile,
                    isTablet: objPlatform.isTablet,
                    isDesktop: objPlatform.isDesktop
                };
            }
        });
        /**
         * 解析
         * 参考:https://github.com/terkel/jquery-ua
         * @param  {Array} 需要解析的数据
         * @param  {String} 需要解析的ua字符串
         * @param  {Boolean} 是否为解析浏览器数据
         * @return {Object} 解析后的对象
         * @version 1.0
         * 2013年9月27日13:36:47
         */
        function _parse(rule, ua, isBrowser) {
            var item = {},
                name,
                versionSearch,
                flags,
                versionNames,
                i,
                is,
                ic,
                j,
                js,
                jc;
            if (isBrowser && ieVer) {
                return {
                    name: "ie",
                    ie: true,
                    version: ieVer,
                    isIe: true
                }
            }
            for (i = 0, is = rule.length; i < is; i++) {
                ic = rule[i];
                name = ic.name;
                versionSearch = ic.versionSearch;
                flags = ic.flags;
                versionNames = ic.versionNames;
                if (ua.indexOf(name) !== -1) {
                    item.name = name.replace(/s/g, '');
                    if (ic.slugName) {
                        item.name = ic.slugName;
                    }
                    item["is" + _upperCase1st(item.name)] = true;
                    item.version = ('' + (new RegExp(versionSearch + '(\d+((\.|_)\d+)*)').exec(ua) || [, 0])[1]).replace(/_/g, '.');
                    if (flags) {
                        for (j = 0, js = flags.length; j < js; j++) {
                            item["is" + _upperCase1st(flags[j])] = true;
                        }
                    }
                    if (versionNames) {
                        for (j = 0, js = versionNames.length; j < js; j++) {
                            jc = versionNames[j];
                            if (item.version.indexOf(jc.number) === 0) {
                                item.fullname = jc.name;
                                item["is" + _upperCase1st(item.fullname)] = true;
                                break;
                            }
                        }
                    }
                    if (rule === parseRule.platforms) {
                        item.isMobile = /mobile|phone/.test(ua) || item.isBlackberry;
                        item.isMobile = item.isMobile === undefined ? false : true;
                        item.isTablet = /tablet/.test(ua) || item.isIpad || (item.isAndroid && !/mobile/.test(ua));
                        item.isTablet = item.isTablet === undefined ? false : true;
                        if (item.isTablet) item.isMobile = false;
                        item.isDesktop = !item.isMobile && !item.isTablet ? true : false;
                        if (item.ios) {
                            item.fullname = 'ios' + parseInt(item.version, 10);
                            item["is" + _upperCase1st(item.fullname)] = true;
                        }
                    }
                    break;
                }
            }
            if (!item.name) {
                item['isUnknown'] = true;
                item.name = '';
                item.version = '';
            }
            return item;
        }
        // 大写第一个字母
        function _upperCase1st(string) {
            return string.replace(/^(w)/, function (w) {
                return w.toUpperCase()
            });
        }
        // 测试mime
        function _mime(where, value, name, nameReg) {
            var mimeTypes = win.navigator.mimeTypes,
                i;
            for (i in mimeTypes) {
                if (mimeTypes[i][where] == value) {
                    if (name !== undefined && nameReg.test(mimeTypes[i][name])) return true;
                    else if (name === undefined) return true;
                }
            }
            return false;
        }
        // 测试plugins
        function _plugins(where, value) {
            var plugins = win.navigator.plugins,
                i;
            for (i in plugins) {
                if (plugins[i][where] == value) return true;
            }
            return false;
        }
    })(jQuery, this);

    转载:http://xiakuai.blog.51cto.com/8682834/1371459

  • 相关阅读:
    xmselect动态渲染(单选和多选)
    Python数据挖掘学习进度11(pandas高级处理)
    Mysql:DML-增删改表中数据
    Mysql:DDL-操作数据库、表
    mybatis实现增删改查操作
    mybatis的入门(环境的部署)
    Redis
    web综合案例:登录界面,注册界面,忘记密码等功能实现
    git常用命令实践
    在IntelliJ IDEA中使用git
  • 原文地址:https://www.cnblogs.com/wawahaha/p/4537543.html
Copyright © 2011-2022 走看看