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 = /(msie\s|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

时间: 2024-10-28 20:36:32

js+jquery检测用户浏览器型号(包括对360浏览器的检测)的相关文章

报表XML导出rtf格式,结果在浏览器中打开XML文件。用360浏览器下载rtf文件打开后出现Authentication failed 问题

报表XML导出rtf格式,结果在浏览器中打开XML文件.用360浏览器下载rtf文件打开后出现Authentication failed 问题 直接上问题图: 问题描述:在Oracle EBS中执行"资源事务处理 XML"请求,选择输出rtf格式,完成后查看输出,却在浏览器中打开了XML文件.        提示:需要检查一下是否有对应的模板文件和模板定义有效时间.        解决方案:1. 查看日志. 从中可以看出出错原因,以及模板代码.2. 添加Oracle XML Publi

adblockTester通过js检测用户浏览器是否安装了AdBlock

adblockTester 简介 首先有必要介绍一下AdBlock,它是一款知名网页广告屏蔽插件,在各大主流浏览器上均有AdBlock插件. AdBlock为用户带来了一片蓝天,却苦了站长,尤其是苦逼小站长,广告被屏蔽,很多站长要饿死街头. adblockTester 正是站长们苦苦寻求的一款jQuery插件,它可以检测用户浏览器是否安装并激活了AdBlock插件,如果检测到激活了AdBlock,站长就可以做一些事情,比如,告诉用户你挡我财路了. 当然,不仅仅是AdBlock,其他的广告屏蔽插件

Js检测是否是360浏览器

Js检测用户浏览器是否是360浏览器,并以Alert弹出框的形式告之用户,当然在实际的使用中,并不需要弹出框,这个就根据需要自己修改代码吧. <html> <head>Js检测是否是360浏览器</head> <body> <script> if(window.external&&window.external.twGetRunPath){ var r=external.twGetRunPath(); if(r&&

通过JS检测360浏览器

如何通过JS检测360浏览器? 尝试了一大堆方法,网上大多数办法都是通过navigator.userAgent来判断,这可能在几年前是行得通的,现在360userAgent输出来跟谷歌除了版本号其余一模一样... 谷歌:      Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 360极速:Mozilla/5.0 (Windo

js/jquery判断浏览器的方法小结

在网站前端开发中,浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道.今天我们把各种判断方法都总结一下,希望对大家有所帮助 JS获取浏览器信息 浏览器代码名称:navigator.appCodeName 浏览器名称:navigator.appName 浏览器版本号:navigator.appVersion 对Java的支持:navigator.javaEnabled() MIM

js/jquery判断浏览器的方法总结

JS获取浏览器信息浏览器代码名称:navigator.appCodeName浏览器名称:navigator.appName浏览器版本号:navigator.appVersion对Java的支持:navigator.javaEnabled()MIME类型(数组):navigator.mimeTypes系统平台:navigator.platform插件(数组):navigator.plugins用户代理:navigator.userAgent js判断IE浏览器的四种方法:方法一: if(windo

js/jQuery判断浏览器名称、内核版本、浏览器壳

1.js方法 /* 判断浏览器名称和版本 目前只能判断:ie/firefox/chrome/opera/safari 2012年5月16日23:47:08 浏览器内核UA:UA; 浏览器内核名称:NV.name; 浏览器内核版本:NV.version; 浏览器外壳名称:NV.shell; */ var NV = {}; var UA = navigator.userAgent.toLowerCase(); try { NV.name=!-[1,]?'ie': (UA.indexOf("firef

js如何判断用户是否是用微信浏览器

微信内置浏览器屏蔽了下载链接,如果用户是用微信内置浏览器打开的,则提示用户换一个浏览器打开页面,那么该如何判断用户是否是用微信浏览器呢 上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了 apk,后百度之,原来是微信内置浏览器屏蔽了下载链接,后面和需求方沟通,需求改为如果用户是用微信内置浏览器打开的,则提示用户换一个浏览

【JS】【19】使用Jquery判断是电脑或手机或微信浏览器访问

正文: //检测平台 var p = navigator.platform; system.win = p.indexOf("Win") == 0; system.mac = p.indexOf("Mac") == 0; system.x11 = (p == "X11") || (p.indexOf("Linux") == 0); system.ipad = (navigator.userAgent.match(/iPad/i