5

我在确定浏览器时遇到问题。

我试过使用navigator,很好,它没有帮助。

我曾经alert(navigator.appName);确定浏览器和我当前正在使用的浏览器Google Chrome,当弹出窗口出现时它显示出来Mozilla,但Mozilla它工作正常并且Mozilla它自己。

代码有问题吗?或者它是一些错误?

4

6 回答 6

7
navigator.sayswho= (function(){
    var N= navigator.appName, ua= navigator.userAgent, tem,
    M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*([\d\.]+)/i);
    if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
    M= M? [M[1], M[2]]:[N, navigator.appVersion, '-?'];
    return M.join(' ');
})();

alert(navigator.sayswho)
于 2012-05-08T20:51:50.260 回答
4

它接近 chrome,如果您需要一个简单的简短解决方案,请尝试使用它:

function getBrowser() {
  if( navigator.userAgent.indexOf("Chrome") != -1 ) {
    return "Chrome";
  } else if( navigator.userAgent.indexOf("Opera") != -1 ) {
    return "Opera";
  } else if( navigator.userAgent.indexOf("MSIE") != -1 ) {
    return "IE";
  } else if( navigator.userAgent.indexOf("Firefox") != -1 ) {
    return "Firefox";
  } else {
    return "unknown";
  }
}
于 2012-05-08T20:38:09.383 回答
2

要回答您的问题,不,没有问题或错误。Chrome 将自己称为 Mozilla。有关 Chrome 提供的确切用户代理字符串,请参阅此内容。

http://www.useragentstring.com/pages/useragentstring.php?name=Chrome

这里有些例子:

铬 20.0.1092.0

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6

铬 20.0.1090.0

Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6

于 2012-05-08T20:29:50.247 回答
0

试试看navigator.appVersion,应该更具体。

于 2012-05-08T20:29:57.190 回答
0

这是一个非常好的 js 文件的链接,它应该回答你所有的问题:

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

于 2012-05-08T20:31:43.680 回答
0

浏览器嗅探维基百科 MDC不是一个好的做法。如果有新的浏览器,但不公开怎么办?检测应该针对功能而不是浏览器。浏览器可能会改变,变得过时,功能是持久的。

只是为了完整性和冒险精神 - 有一种方法可以测试特定的 JavaScript 对象:

isChrome = function() { return !!(window.chrome);}
isOpera = function() { return !!(window.opera);}

对于 IE,有一个神奇的东西叫做条件编译SO Question和关于它的材料MSDN JSkit

于 2012-05-08T23:06:25.590 回答