一个常用但是被高估的Javascript函数就是浏览器检测。有些时候,你想给出一个说明或者加载一个页面来提示用户,以免使用Safari等浏览器。
使用方法:
Browser name: BrowserDetect.browser
Browser version: BrowserDetect.version
OS name: BrowserDetect.OS
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 == - 1 ) return ;
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();
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 == - 1 ) return ;
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();
作者:山边小溪
主站:yyyweb.com 记住啦:)
欢迎任何形式的转载,但请务必注明出处。