使用Javascript检测Google Chrome切换CSS

使用Javascript检测Google Chrome切换CSS,javascript,css,google-chrome,browser-detection,Javascript,Css,Google Chrome,Browser Detection,我一直在玩不同的脚本,我发现一个适用于一切,但铬。。。这是我用来区分.CSS文件的代码。我试着把浏览器名改成“Chrome”,但没有成功 if (browser == 'Firefox') { document.write('<link rel="stylesheet" href="../component/fireFoxdefault.css" />'); } if (browser == 'Safari') { document.write('<'+'lin

我一直在玩不同的脚本,我发现一个适用于一切,但铬。。。这是我用来区分.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" />');
}
if(浏览器=='Firefox'){
文件。写(“”);
}
如果(浏览器==“Safari”){
文件。写(“”);
}

使用以下方法检测铬:

var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
资料来源:

更新(2015-07-20)

上述解决方案并不总是有效。可以在中找到更可靠的解决方案(见下文)。话虽如此,我想:

您可以包括专门针对chrome的css文件,如下所示:

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

以下是两种简单的方法,一种使用indexOf,另一种使用test:

// first method 
function check_chrome_ua() {
    var ua = navigator.userAgent.toLowerCase();
    var is_chrome = /chrome/.test(ua);

    return is_chrome;
}

// second method */
function check_chrome_ua2() {
    var ua = navigator.userAgent.toLowerCase();
    var is_chrome = ua.indexOf("applewebkit/") != -1 && ua.indexOf("khtml") > - 1;

    return is_chrome;
}

alert(check_chrome_ua()); // false or true 
alert(check_chrome_ua2()); // false or true

在检查chrome是否正在使用这两个布尔函数中的一个之后,您可以实现更改样式表的方法。

在iOS上更新chrome:chrome 38(在iOS 8.1上测试)在
上返回false!!window.chrome
。要解决此问题,您可以使用:

function isChrome(){
    var windowChrome = !!window.chrome;
    if(!windowChrome){
        // Chrome iOS specific test
        var pattern = /crios/i;
        return pattern.test(window.navigator.userAgent);
    }else{
        return windowChrome;
    }
}

谷歌在这件事上

Hmm,我知道这不是你的问题的一部分(也许你有一个很好的理由这么做),但你不应该写CSS来瞄准浏览器,你应该瞄准功能。。。例如,Safari和Chrome绝对不需要单独的CSS。可能的复制品很好的解决了。我查看了该网站并阅读了它,但由于某种原因,它确实没有成功,因为变量末尾带有“-1”..indexOf返回值(浏览器名称)在字符串(userAgent)中的位置。该位置以0开头-如果找不到值,则返回1<代码>变量为_chrome=!!chrome是一种更好的检测方法,因为用户代理可能被欺骗。@谢谢!我在回答中提到了这一点。我发现通过用户代理进行chrome检测是不可靠的。例如,linux上的Opera 27在用户代理字符串中也包含“chrome”。不明白为什么在第二行中再次使用navigator.userAgent.toLowerCase(),因为您已经在上面声明它为userAgent;)回答不错,虽然复制粘贴在上面的值而不是键入Chrome for iOS只是Safari,但不要混淆两者。
var userAgent = navigator.userAgent.toLowerCase(); 
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase()); 

// Is this a version of Chrome?
if($.browser.chrome){
  userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
  userAgent = userAgent.substring(0,userAgent.indexOf('.'));
  $.browser.version = userAgent;
  // If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
  $.browser.safari = false;
}

// Is this a version of Safari?
if($.browser.safari){
  userAgent = userAgent.substring(userAgent.indexOf('safari/') +7);
  userAgent = userAgent.substring(0,userAgent.indexOf('.'));
  $.browser.version = userAgent;
}
// first method 
function check_chrome_ua() {
    var ua = navigator.userAgent.toLowerCase();
    var is_chrome = /chrome/.test(ua);

    return is_chrome;
}

// second method */
function check_chrome_ua2() {
    var ua = navigator.userAgent.toLowerCase();
    var is_chrome = ua.indexOf("applewebkit/") != -1 && ua.indexOf("khtml") > - 1;

    return is_chrome;
}

alert(check_chrome_ua()); // false or true 
alert(check_chrome_ua2()); // false or true
function isChrome(){
    var windowChrome = !!window.chrome;
    if(!windowChrome){
        // Chrome iOS specific test
        var pattern = /crios/i;
        return pattern.test(window.navigator.userAgent);
    }else{
        return windowChrome;
    }
}