web-dev-qa-db-ja.com

ブラウザがChromeであるかどうかをjQueryを使用して検出する方法は?

Safariで正常に動作するchrome両方のWebkitブラウザーで実行される関数に問題があります...

Chromeでは関数内の変数をカスタマイズする必要がありますが、Safariではありません。

悲しいことに、私はこれを使用して、Webkitブラウザであるかどうかを検出しています:

if ($.browser.webkit) {

しかし、私は検出する必要があります:

if ($.browser.chrome) {

同様のステートメント(上記の作業バージョン)を作成する方法はありますか?

56
TaylorMac
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); 

if($.browser.chrome){
  ............

}

UPDATE:(10x to @Mr。Bacciagalupe)

jQueryは$.browser1.9とその最新リリースから削除しました。

しかし、スタンドアロンプ​​ラグインとして$ .browserを使用できます。 here

106
Haim Evgi
if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){
 alert('I am chrome');
}
46
adedoy

この質問については、すでにここで説明しました: JavaScript:ユーザーのブラウザがChromeかどうかを調べる方法

これを試してください:

var isChromium = window.chrome;
if(isChromium){
    // is Google chrome 
} else {
    // not Google chrome 
}

しかし、IE11、IE Edge、およびOperaもtruewindow.chrome

以下を使用してください:

// please note, 
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// but needs to check if window.opr is not undefined
// and new IE Edge outputs to true now for window.chrome
// and if not iOS Chrome check
// so use the below updated condition
var isChromium = window.chrome;
var winNav = window.navigator;
var vendorName = winNav.vendor;
var isOpera = typeof window.opr !== "undefined";
var isIEedge = winNav.userAgent.indexOf("Edge") > -1;
var isIOSChrome = winNav.userAgent.match("CriOS");

if (isIOSChrome) {
   // is Google Chrome on IOS
} else if(
  isChromium !== null &&
  typeof isChromium !== "undefined" &&
  vendorName === "Google Inc." &&
  isOpera === false &&
  isIEedge === false
) {
   // is Google Chrome
} else { 
   // not Google Chrome 
}

上記の投稿では、jQuery.browserを使用することをお勧めします。 しかし、jQuery APIはこのメソッドの使用を推奨していません..( DOCS in API を参照)。また、jQueryの今後のリリースで、その機能がチームがサポートするプラグインに移行される可能性があると述べています。

JQuery APIは jQuery.support

その理由は、「jQuery.browser」はなりすましの可能性があるユーザーエージェントを使用しており、jQueryの以降のバージョンでは実際に廃止されているためです。本当に$ .browserを使用したい場合。jQueryバージョン1.9.1から削除されたため、スタンドアロンjQueryプラグインへのリンクを次に示します。 https://github.com/gabceb/jquery-browser-plugin

ブラウザの検出ではなく、機能オブジェクトの検出を使用することをお勧めします。

また、Google Chromeインスペクターを使用してコンソールタブに移動します。「window」と入力してEnterキーを押します。[window object]のDOMプロパティを表示できます。オブジェクトを折りたたむと、「chrome」プロパティを含むすべてのプロパティを表示できます。

質問がjQueryの処理方法であったとしても、これが役立つことを願っています。ただし、ストレートjavascriptの方が簡単な場合があります。

11

ユーザーエンドレスは正しい、

$.browser.chrome = (typeof window.chrome === "object"); 

コードは、jQueryを使用してChromeブラウザを検出するのに最適です。

IEを使用し、プラグインとしてGoogleFrameを追加した場合、

var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );

コードは、Chrome browserとして処理します。これは、GoogleFrameプラグインがナビゲータープロパティを変更し、その中にchromeframeを追加するためです。

9
Master

userAgentは変更できます。より堅牢にするには、chromeで指定されたグローバル変数を使用します

$.browser.chrome = (typeof window.chrome === "object");
5
Endless
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
5
thinkdevcode
if(navigator.vendor.indexOf('Goog') > -1){
  //Your code here
}
1
Rafael Soteras

悲しいことにOperaの最新アップデート!!window.chrome(およびウィンドウオブジェクトの他のテスト)Operaでテストする場合はtrueを返します。

Conditionizrがこれを処理し、Operaの問題を解決します。

conditionizr.add('chrome', [], function () {
    return !!window.chrome && !/opera|opr/i.test(navigator.userAgent);
});

上記のいずれも現在有効ではないため、使用することを強くお勧めします。

これにより、次のことが可能になります。

if (conditionizr.chrome) {...}

Conditionizr は、他のブラウザーの検出を処理し、jQueryハックよりもはるかに高速で信頼性があります。

1
Halcyon991

簡単な追加として、誰もこのことを考えていないことに驚いています。in演算子を使用できます。

"chrome" in window

明らかに、これはJQueryを使用していませんが、外部ライブラリを使用していないときに便利なので、私はそれを置くと考えました。

1
Florrie

Jqueryではありませんが、私はjqueryを自分で使用しますが、ブラウザの検出には このページ でスクリプトを数回使用しました。すべての主要なブラウザを検出し、次にいくつかを検出します。作業はほぼすべて完了しています。

1
stefgosselin

回答@IEをテストすると、常に「true」になりました。より良い方法は、@ IEでも機能するこれです:

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

この回答に記載されているとおり: https://stackoverflow.com/a/4565120/1201725

0