• jquery判断浏览器版本插件,jquery-browser.js

    2017-03-26 530阅读 0评论

    一、jquery判断浏览器版本插件,jquery-browser.js

     

    jquery 1.9 之后已经删除判断浏览器版本的方法:

    $.browser.msie 

    $.browser.version

    原因是:

     

    注意:通过user agent字符串来检测浏览器不是一个好主意,在1.9中将完全移除该方法,不过你可以使用jQuery Migrate(迁移)插件。或者你可以试试Modernizr

     

    但如果想用怎么办呢?

     

    二、解决方法:

     

    复制下面的代码,保存为jquery-browser.js,在jquery.js下增加jquery-browser.js,就可以使用jquery删除的浏览器版本判断的方法了。

     

    附件也有文件,可直接下载。

     

    复制代码
        (function(jQuery) {  
          
            if (jQuery.browser)  
                return;  
          
            jQuery.browser = {};  
            jQuery.browser.mozilla = false;  
            jQuery.browser.webkit = false;  
            jQuery.browser.opera = false;  
            jQuery.browser.msie = false;  
          
            var nAgt = navigator.userAgent;  
            jQuery.browser.name = navigator.appName;  
            jQuery.browser.fullVersion = '' + parseFloat(navigator.appVersion);  
            jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10);  
            var nameOffset, verOffset, ix;  
          
            // In Opera, the true version is after "Opera" or after "Version"  
            if ((verOffset = nAgt.indexOf("Opera")) != -1) {  
                jQuery.browser.opera = true;  
                jQuery.browser.name = "Opera";  
                jQuery.browser.fullVersion = nAgt.substring(verOffset + 6);  
                if ((verOffset = nAgt.indexOf("Version")) != -1)  
                    jQuery.browser.fullVersion = nAgt.substring(verOffset + 8);  
            }  
            // In MSIE, the true version is after "MSIE" in userAgent  
            else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {  
                jQuery.browser.msie = true;  
                jQuery.browser.name = "Microsoft Internet Explorer";  
                jQuery.browser.fullVersion = nAgt.substring(verOffset + 5);  
            }  
            // In Chrome, the true version is after "Chrome"  
            else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {  
                jQuery.browser.webkit = true;  
                jQuery.browser.name = "Chrome";  
                jQuery.browser.fullVersion = nAgt.substring(verOffset + 7);  
            }  
            // In Safari, the true version is after "Safari" or after "Version"  
            else if ((verOffset = nAgt.indexOf("Safari")) != -1) {  
                jQuery.browser.webkit = true;  
                jQuery.browser.name = "Safari";  
                jQuery.browser.fullVersion = nAgt.substring(verOffset + 7);  
                if ((verOffset = nAgt.indexOf("Version")) != -1)  
                    jQuery.browser.fullVersion = nAgt.substring(verOffset + 8);  
            }  
            // In Firefox, the true version is after "Firefox"  
            else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {  
                jQuery.browser.mozilla = true;  
                jQuery.browser.name = "Firefox";  
                jQuery.browser.fullVersion = nAgt.substring(verOffset + 8);  
            }  
            // In most other browsers, "name/version" is at the end of userAgent  
            else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt  
                    .lastIndexOf('/'))) {  
                jQuery.browser.name = nAgt.substring(nameOffset, verOffset);  
                jQuery.browser.fullVersion = nAgt.substring(verOffset + 1);  
                if (jQuery.browser.name.toLowerCase() == jQuery.browser.name  
                        .toUpperCase()) {  
                    jQuery.browser.name = navigator.appName;  
                }  
            }  
            // trim the fullVersion string at semicolon/space if present  
            if ((ix = jQuery.browser.fullVersion.indexOf(";")) != -1)  
                jQuery.browser.fullVersion = jQuery.browser.fullVersion  
                        .substring(0, ix);  
            if ((ix = jQuery.browser.fullVersion.indexOf(" ")) != -1)  
                jQuery.browser.fullVersion = jQuery.browser.fullVersion  
                        .substring(0, ix);  
          
            jQuery.browser.majorVersion = parseInt('' + jQuery.browser.fullVersion, 10);  
            if (isNaN(jQuery.browser.majorVersion)) {  
                jQuery.browser.fullVersion = '' + parseFloat(navigator.appVersion);  
                jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10);  
            }  
            jQuery.browser.version = jQuery.browser.majorVersion;  
        })(jQuery);  
    复制代码

    另外网上也有另一个插件,原理是一样的。本人没有测试过,先记录在这里吧:

    复制代码
        jQuery.extend({  
            browser: function()   
            {  
                var  
                rwebkit = /(webkit)\/([\w.]+)/,  
                ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,  
                rmsie = /(msie) ([\w.]+)/,  
                rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,      
                browser = {},  
                ua = window.navigator.userAgent,  
                browserMatch = uaMatch(ua);  
          
                if (browserMatch.browser) {  
                    browser[browserMatch.browser] = true;  
                    browser.version = browserMatch.version;  
                }  
                return { browser: browser };  
            },  
        });  
          
        function uaMatch(ua)   
        {  
                ua = ua.toLowerCase();  
          
                var match = rwebkit.exec(ua)  
                            || ropera.exec(ua)  
                            || rmsie.exec(ua)  
                            || ua.indexOf("compatible") < 0 && rmozilla.exec(ua)  
                            || [];  
          
                return {  
                    browser : match[1] || "",  
                    version : match[2] || "0"  
                };  
        }  
    复制代码

    下载地址:地址1

        文章来自:http://fanshuyao.iteye.com/blog/2312963

    posted @   webnote  阅读(530)  评论(0编辑  收藏  举报
    我要评论

    编辑推荐:
    · DeepSeek 解答了困扰我五年的技术问题
    · 为什么说在企业级应用开发中,后端往往是效率杀手?
    · 用 C# 插值字符串处理器写一个 sscanf
    · Java 中堆内存和栈内存上的数据分布和特点
    · 开发中对象命名的一点思考
    阅读排行:
    · DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
    · PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
    · What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
    · DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
    · 程序员转型AI:行业分析
    点击右上角即可分享
    微信分享提示