ブラウザがかどうかを確認するためにブール値を返す関数が必要です Chromeです。
このような機能を作成するにはどうすればよいですか?
ブラウザがかどうかを確認するためにブール値を返す関数が必要です Chromeです。
このような機能を作成するにはどうすればよいですか?
回答:
更新:これを処理するための更新された方法については、Jonathanの回答を参照してください。以下の答えはまだ機能する可能性がありますが、他のブラウザで誤検知を引き起こす可能性があります。
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
ただし、前述のように、ユーザーエージェントはなりすましになる可能性があるため、機能検出(Modernizerなど)を使用することが常に最善です。、他の回答にあるように、これらの問題を処理するとき)です。
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
までnavigator.vendor
、このメソッドは防弾ではありませんので、のようなものは、/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
おそらくより良い仕事でしょう
ブラウザがGoogle 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
}
使用例:http : //codepen.io/jonathan/pen/WpQELR
これが機能する理由は、Google Chromeインスペクタを使用してコンソールタブに移動するためです。「ウィンドウ」と入力し、Enterキーを押します。次に、「ウィンドウオブジェクト」のDOMプロパティを表示できます。オブジェクトを折りたたむと、「chrome」プロパティを含むすべてのプロパティを表示できます。
厳密なイコールtrueを使用してIEをチェックすることはできなくなりましたwindow.chrome
。IEは以前は戻りましたがundefined
、今では戻りますtrue
。しかし、何を推測すると、IE11は再び未定義を返します。IE11はまた、空の文字列を返す""
ためにwindow.navigator.vendor
。
これが役に立てば幸いです!
更新:
新しいOpera 18+がに対してtrueを出力することを以下に指摘してくれたHalcyon991に感謝しますwindow.chrome
。Opera 18はChromium 31をベースにしているようです。それで、window.navigator.vendor
is is "Google Inc"
and not isであることを確認するチェックを追加しました"Opera Software ASA"
。また、RingとAdrien Beのおかげで、Chrome 33がtrueを返さwindow.chrome
なくなったことが判明しました。しかし、IE11に細心の注意を払って、undefined
IE11 undefined
が最初にリリースされたときと同様に出力するようにしたので、チェックバックを追加しました..その後、いくつかの更新ビルド後に出力されtrue
ました..最近の更新ビルドがundefined
再び出力されています。マイクロソフトはそれを補うことができません!
更新 2015/7/24-Operaチェックの追加
Opera 30がリリースされました。出力しなくなりましたwindow.opera
。またwindow.chrome
、新しいOpera 30ではtrueに出力されます。したがって、userAgentにOPRがあるかどうかを確認する必要があります。Google Chromeと同じレンダリングエンジンを使用しているため、Opera 30のこの新しい変更に対応するために、上記の条件を更新しました。
UPDATE 2015/10/13-IEチェックの追加
原因それは出力にIEエッジのチェックを追加しましtrue
ためwindow.chrome
にもかかわらず、IE11出力.. undefined
ためwindow.chrome
。これについて知らせてくれたartfulhackerに感謝します!
UPDATE 2 /5/2016-iOS Chromeチェックの追加
iOSのChrome CriOS
に出力するtrue
ため、iOS Chromeのチェックを追加しました。これについてお知らせしてくれたxinthoseに感謝します。
UPDATE 4 /18/2018-Operaチェックの変更
Operaのチェックを編集しましたが、Chrome 66にはチェックwindow.opr
がありません。これを報告してくれたFrosty ZとDaniel Wallmanに感謝します!undefined
OPR
window.navigator.vendor
Mozilla/5.0 (Linux; Android 8.0.0; ASUS_Z012D Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36
したがって、falseをisChrome()
返します。
window.opr
ないように修正しましたundefined
。
より単純な解決策は、単に使用することです:
var isChrome = !!window.chrome;
!!
ただブール値にオブジェクトを変換します。Chrome以外のブラウザでは、このプロパティはになりますがundefined
、これは真実ではありません。
これは、ChromeベースのEdgeのバージョンでもtrueを返すことに注意してください(これを指摘してくれた@Carrmに感謝します)。
true
にwindow.chrome
。防弾検出+修正が含まれているconditionizr.comを確認してください。
!!
値をtrue
またはに変換しますfalse
。typeof(window.chrome)
を与える"object"
が、typeof(!!window.chrome)
を与える"boolean"
。if
ステートメントが変換を行うため、コードサンプルも機能します。
true
はEdgeにも戻ります。
console.log(JSON.stringify({
isAndroid: /Android/.test(navigator.userAgent),
isCordova: !!window.cordova,
isEdge: /Edge/.test(navigator.userAgent),
isFirefox: /Firefox/.test(navigator.userAgent),
isChrome: /Google Inc/.test(navigator.vendor),
isChromeIOS: /CriOS/.test(navigator.userAgent),
isChromiumBased: !!window.chrome && !/Edge/.test(navigator.userAgent),
isIE: /Trident/.test(navigator.userAgent),
isIOS: /(iPhone|iPad|iPod)/.test(navigator.platform),
isOpera: /OPR/.test(navigator.userAgent),
isSafari: /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent),
isTouchScreen: ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch,
isWebComponentsSupported: 'registerElement' in document && 'import' in document.createElement('link') && 'content' in document.createElement('template')
}, null, ' '));
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
true
Microsoft Edgeに戻ります。
MacのChromeで動作します。上記のすべてよりも(userAgent文字列をテストする場合)シンプルであるか、信頼性が高いようです。
var isChrome = false;
if (window.chrome && !window.opr){
isChrome = true;
}
console.log(isChrome);
const isChrome = window.chrome && !window.opr;
ユーザーはユーザーエージェントを変更できます。要素のオブジェクトでwebkit
接頭辞付きのプロパティをテストしてみてくださいstyle
body
if ("webkitAppearance" in document.body.style) {
// do stuff
}
これを確認してください:Safari、Chrome、IE、Firefox、Operaブラウザーを検出する方法は?
あなたの場合:var isChrome = !! window.chrome &&(!! window.chrome.webstore || !! window.chrome.runtime);
さまざまなデスクトップブラウザ(Firefox、IE、Opera、Edge、Chrome)の名前を知る。サファリを除く。
function getBrowserName() {
var browserName = '';
var userAgent = navigator.userAgent;
(typeof InstallTrigger !== 'undefined') && (browserName = 'Firefox');
( /* @cc_on!@*/ false || !!document.documentMode) && (browserName = 'IE');
(!!window.chrome && userAgent.match(/OPR/)) && (browserName = 'Opera');
(!!window.chrome && userAgent.match(/Edge/)) && (browserName = 'Edge');
(!!window.chrome && !userAgent.match(/(OPR|Edge)/)) && (browserName = 'Chrome');
/**
* Expected returns
* Firefox, Opera, Edge, Chrome
*/
return browserName;
}
次のブラウザバージョンで動作します。
Opera - 58.0.3135.79
Firefox - 65.0.2 (64-bit)
IE - 11.413.15063 (JS Fiddle no longer supports IE just paste in Console)
Edge - 44.17763.1.0
Chrome - 72.0.3626.121 (Official Build) (64-bit)
元のコードスニペットはChromeで機能しなくなったため、どこで見つけたか忘れました。以前はSafariを使用していましたが、Safariにアクセスできなくなったため、確認できなくなりました。
FirefoxとIEのコードのみが元のスニペットの一部でした。
Opera、Edge、Chromeのチェックは簡単です。userAgentには違いがあります。OPR
Operaにのみ存在します。Edge
Edgeにのみ存在します。したがって、Chromeを確認するには、これらの文字列が存在してはなりません。
FirefoxとIEについては、私はそれらが何をしているのか説明できません。
すべての答えは間違っています。「オペラ」と「クローム」はすべて同じです。
(編集部分)
これが正しい答えです
if (window.chrome && window.chrome.webstore) {
// this is Chrome
}
window.chrome.webstore
は機能しなくなります。現在undefined