Safariで正常に動作するchrome両方のWebkitブラウザーで実行される関数に問題があります...
Chromeでは関数内の変数をカスタマイズする必要がありますが、Safariではありません。
悲しいことに、私はこれを使用して、Webkitブラウザであるかどうかを検出しています:
if ($.browser.webkit) {
しかし、私は検出する必要があります:
if ($.browser.chrome) {
同様のステートメント(上記の作業バージョン)を作成する方法はありますか?
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if($.browser.chrome){
............
}
UPDATE:(10x to @Mr。Bacciagalupe)
jQueryは$.browser
を1.9とその最新リリースから削除しました。
しかし、スタンドアロンプラグインとして$ .browserを使用できます。 here
if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){
alert('I am chrome');
}
この質問については、すでにここで説明しました: JavaScript:ユーザーのブラウザがChromeかどうかを調べる方法
これを試してください:
var isChromium = window.chrome;
if(isChromium){
// is Google chrome
} else {
// not Google chrome
}
しかし、IE11、IE Edge、およびOperaもtrue
がwindow.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の方が簡単な場合があります。
ユーザーエンドレスは正しい、
$.browser.chrome = (typeof window.chrome === "object");
コードは、jQueryを使用してChromeブラウザを検出するのに最適です。
IEを使用し、プラグインとしてGoogleFrameを追加した場合、
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
コードは、Chrome browserとして処理します。これは、GoogleFrameプラグインがナビゲータープロパティを変更し、その中にchromeframeを追加するためです。
userAgentは変更できます。より堅牢にするには、chromeで指定されたグローバル変数を使用します
$.browser.chrome = (typeof window.chrome === "object");
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
if(navigator.vendor.indexOf('Goog') > -1){
//Your code here
}
悲しいことに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ハックよりもはるかに高速で信頼性があります。
簡単な追加として、誰もこのことを考えていないことに驚いています。in
演算子を使用できます。
"chrome" in window
明らかに、これはJQueryを使用していませんが、外部ライブラリを使用していないときに便利なので、私はそれを置くと考えました。
Jqueryではありませんが、私はjqueryを自分で使用しますが、ブラウザの検出には このページ でスクリプトを数回使用しました。すべての主要なブラウザを検出し、次にいくつかを検出します。作業はほぼすべて完了しています。
回答@IEをテストすると、常に「true」になりました。より良い方法は、@ IEでも機能するこれです:
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
この回答に記載されているとおり: https://stackoverflow.com/a/4565120/1201725