2013-09-23 241 views
-3

我想显示消息“您没有使用Chrome浏览器,点击此处下载Chrome浏览器,但如果浏览器使用的是Safari浏览器,我不希望显示消息。 (使用IE浏览器(太糟糕了)和FF(太重)或任何其他浏览器(除Safari之外,因为不错,并且因为任何其他第三方浏览器可能安装在Apple OS上都会有不好的表现)使用Chrome(理想选择对于使用Javascript检测Chrome浏览器和Safari浏览器

我的应用程序的最佳用户体验),我发现了一个脚本,谁似乎很好地适应于做一个可靠的检测,但我不知道如何自定义代码:

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.vendor, 
     subString: "Apple", 
     identity: "Safari", 
     versionSearch: "Version" 
    } 
] 

}; 
BrowserDetect.init(); 

有人可以帮忙吗?如果需要我在这里找到该脚本:

http://www.quirksmode.org/js/detect.html

+7

为什么你不正确地写你的web应用程序,而不是强迫用户使用特定的浏览器? – Blender

+0

为什么你不尝试类似这样的东西:http://stackoverflow.com/a/12625944/487940。然后,您可以稍作修改以显示您的消息。此外,强迫用户浏览器的主意不好。如果需要,您应该展示一些更友好的信息:“为获得最佳体验,请下载并使用Google Chrome”。 IE已经有了很大的改进,所以不要低估它。 – harsimranb

+6

检测功能,而不是浏览器 – Eric

回答

2

回答这个问题... :) 如果你真的想使用它,那么就使用BrowserDetect.browser作为指南。 我使用了http://www.quirksmode.org/js/detect.html的代码。

<html> 
<head> 
<script type="text/javascript"> 
<!-- 
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", 
     versionSearch: "Version" 
    }, 
    { 
     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(); 


</script> 
//--> 
</head> 
<body> 
<script type="text/javascript"> 
<!-- 
document.write('<p class="accent">You\'re using ' + BrowserDetect.browser + ' ' + BrowserDetect.version + ' on ' + BrowserDetect.OS + '!</p>'); 
// --> 
</script> 
<script type="text/javascript"> 
if((BrowserDetect.browser == 'Chrome') || (BrowserDetect.browser == 'Safari')) { 
alert('Good job!'); 
} else { 
alert('You are living in a cave, dude! Change your browser.'); 
    if(BrowserDetect.browser == 'firefox') { 
alert('I mean - firefox is OK, but bit heavy'); 
    } 
} 
</script> 

</body> 
</html>