使用Javascript检测Google Chrome以切换CSS

Jak*_*kob 11 javascript css google-chrome browser-detection

我一直在玩不同的脚本,我发现一个适用于Chrome以外的所有脚本...这是我用来区分.CSS文件的代码.我尝试将浏览器名称改为"Chrome",但这不起作用.

if (browser == 'Firefox') {
    document.write('<link rel="stylesheet" href="../component/fireFoxdefault.css" />');
}
if (browser == 'Safari') {
    document.write('<'+'link rel="stylesheet" href="../component/default.css" />');
}
Run Code Online (Sandbox Code Playgroud)

TJ.*_*TJ. 36

使用以下方法检测铬:

var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
Run Code Online (Sandbox Code Playgroud)

资料来源:http://davidwalsh.name/detecting-google-chrome-javascript

更新(2015-07-20):

上述解决方案并不总是有效.在这个答案中可以找到更可靠的解决方案(见下文).话虽这么说,我会避免浏览器检测,而是使用功能检测:

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 
Run Code Online (Sandbox Code Playgroud)

你可以包含一个专门用于chrome的css文件,如下所示:

if (isChrome) {
    document.write('<'+'link rel="stylesheet" href="../component/chromeDefault.css" />');
}
Run Code Online (Sandbox Code Playgroud)

更新(2014-07-29):

@gillesc有一个更优雅的检测Chrome的建议,他在下面的评论中发布,也可以在这个问题上查看.

var isChrome = !!window.chrome
Run Code Online (Sandbox Code Playgroud)

  • `var is_chrome = !! window.chrome`是一种更好的检测方法,因为用户代理可以被欺骗. (9认同)
  • 我发现通过用户代理进行铬检测是不可靠的.例如,Linux上的Opera 27在用户代理字符串中也包含"chrome". (2认同)