PPK提供的浏览器类型及版本检测方法

      一个常用但是被高估的Javascript函数就是浏览器检测。有些时候,你想给出一个说明或者加载一个页面来提示用户,以免使用Safari等浏览器。

使用方法:

Browser name: BrowserDetect.browser 
Browser version: BrowserDetect.version 
OS name: BrowserDetect.OS 
var BrowserDetect = {
    init: 
function () {
        
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        
this.version = this.searchVersion(navigator.userAgent)
            
|| this.searchVersion(navigator.appVersion)
            
|| "an unknown version";
        
this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: 
function (data) {
        
for (var i=0;i<data.length;i++)    {
            
var dataString = data[i].string;
            
var dataProp = data[i].prop;
            
this.versionSearchString = data[i].versionSearch || data[i].identity;
            
if (dataString) {
                
if (dataString.indexOf(data[i].subString) != -1)
                    
return data[i].identity;
            }
            
else if (dataProp)
                
return data[i].identity;
        }
    },
    searchVersion: 
function (dataString) {
        
var index = dataString.indexOf(this.versionSearchString);
        
if (index == -1return;
        
return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
        {
            string: navigator.userAgent,
            subString: 
"Chrome",
            identity: 
"Chrome"
        },
        {     string: navigator.userAgent,
            subString: 
"OmniWeb",
            versionSearch: 
"OmniWeb/",
            identity: 
"OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: 
"Apple",
            identity: 
"Safari",
            versionSearch: 
"Version"
        },
        {
            prop: window.opera,
            identity: 
"Opera"
        },
        {
            string: navigator.vendor,
            subString: 
"iCab",
            identity: 
"iCab"
        },
        {
            string: navigator.vendor,
            subString: 
"KDE",
            identity: 
"Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: 
"Firefox",
            identity: 
"Firefox"
        },
        {
            string: navigator.vendor,
            subString: 
"Camino",
            identity: 
"Camino"
        },
        {        
// for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: 
"Netscape",
            identity: 
"Netscape"
        },
        {
            string: navigator.userAgent,
            subString: 
"MSIE",
            identity: 
"Explorer",
            versionSearch: 
"MSIE"
        },
        {
            string: navigator.userAgent,
            subString: 
"Gecko",
            identity: 
"Mozilla",
            versionSearch: 
"rv"
        },
        {         
// for older Netscapes (4-)
            string: navigator.userAgent,
            subString: 
"Mozilla",
            identity: 
"Netscape",
            versionSearch: 
"Mozilla"
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: 
"Win",
            identity: 
"Windows"
        },
        {
            string: navigator.platform,
            subString: 
"Mac",
            identity: 
"Mac"
        },
        {
               string: navigator.userAgent,
               subString: 
"iPhone",
               identity: 
"iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: 
"Linux",
            identity: 
"Linux"
        }
    ]

};
BrowserDetect.init();
原文地址:https://www.cnblogs.com/lhb25/p/1486634.html