web-dev-qa-db-ja.com

Javascriptを使用してGoogleを検出Chrome CSSを切り替える

私はさまざまなスクリプトで遊んでいましたが、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" />');
}
11
Jakob

クロムを検出するには、以下を使用します。

var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

ソース: http://davidwalsh.name/detecting-google-chrome-javascript

更新(2015-07-20)

上記の解決策が常に機能するとは限りません。より信頼性の高い解決策は この回答 (以下を参照)にあります。そうは言っても、私は ブラウザの検出を避け、代わりに機能の検出を使用します

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 

次のように、chrome)専用のcssファイルを含めることができます。

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

更新(2014-07-29):

@gillescには、Chromeを検出するためのよりエレガントな提案があります。これは、彼が以下のコメントに投稿したものであり、これについても表示できます 質問

var isChrome = !!window.chrome
36
TJ.

Chromeの更新:Chrome 38(iOS 8.1でテスト済み) !!window.chromeでfalseを返します。これを修正するには、次を使用できます。

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;
    }
}

グーグル 参照 問題について

1
Arnaud Leyder

これが2つの簡単なメソッドです。1つはindexOfを使用し、もう1つは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がこれらの2つのブール関数のいずれかで使用されているかどうかを確認した後、スタイルシートを変更するメソッドを実装できます。

1
Rrjrjtlokrthjji