jquery または javascript を使用して、chrome および safari ブラウザーを検出しようとしています。jQuery.browser を使うべきではないと思いました。ここに何か提案はありますか?どうもありがとう!
10 に答える
を使用したくない場合は、ケース 1$.browser
を参照してください。それ以外の場合は、使用が推奨されていないため、ケース 2と3を使用して情報を得ることができます (ユーザー エージェントは、これを使用してスプーフィングされる可能性があります)。別の方法として、エージェント情報ではなく機能サポートを検出するものを使用できます。$.browser
jQuery.support
しかし...
ブラウザの種類(Chrome または Safari のみ)を取得したいが を使用しない場合は$.browser
、ケース 1が探しているものです...
これはあなたの要件に適合します:
ケース 1: (jQuery も $.browser も使用せず、javascript のみ)
ライブデモ: http://jsfiddle.net/oscarj24/DJ349/
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
if (isChrome) alert("You are using Chrome!");
if (isSafari) alert("You are using Safari!");
これらのケースは以前に使用してうまく機能しましたが、お勧めしません...
ケース 2: (jQuery と $.browser を使用、これはトリッキーです)
ライブデモ: http://jsfiddle.net/oscarj24/gNENk/
$(document).ready(function(){
/* Get browser */
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
/* Detect Chrome */
if($.browser.chrome){
/* Do something for Chrome at this point */
/* Finally, if it is Chrome then jQuery thinks it's
Safari so we have to tell it isn't */
$.browser.safari = false;
}
/* Detect Safari */
if($.browser.safari){
/* Do something for Safari */
}
});
ケース 3: (jQuery と $.browser を使用した「エレガントな」ソリューション)
ライブデモ: http://jsfiddle.net/oscarj24/uJuEU/
$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
if ($.browser.chrome) alert("You are using Chrome!");
if ($.browser.safari) alert("You are using Safari!");
ここでの回答のほとんどは時代遅れであり、これ以上ありません。jQuery.browser
なぜ誰かがjQueryを使用したり、User Agent
私を超えて嗅いだりするのでしょうか。
ブラウザーを検出する代わりに、
(サポートされているかどうかに関係なく)機能を検出する必要があります。
以下はfalse
Mozilla Firefox、Microsoft Edgeです。Google Chrometrue
にあります。
"webkitLineBreak" in document.documentElement.style
これは将来性がないことに注意してください。ブラウザは-webkit-line-break
将来いつでもプロパティを実装できるため、誤検出が発生する可能性があります。次に、Chrome でドキュメント オブジェクトを見て、webkit
接頭辞が付いているものを選択し、それが他のブラウザにないことを確認します。
ブラウザを検出する代わりに、機能を検出する必要があります(サポートされているかどうかは関係ありません)。これはModernizrが行うことです。
もちろん、問題を回避する必要があり、機能を検出しないために、ブラウザをチェックする必要がある場合もあります。WebKit
jQueryを使用しない特定のチェック$.browser
:
var isWebKit = !!window.webkitURL;
コメントのいくつかが示唆しているように、上記のアプローチは古いSafariバージョンでは機能しません。コメントや別の回答で提案されている別のアプローチで更新する:
var isWebKit = 'WebkitAppearance' in document.documentElement.style;
2019年にはまだ癖と矛盾があります。
たとえば、ブラウザー間でスケーリングされた svg およびポインター イベントを使用します。
このトピックの答えはどれももう機能していません。(おそらくjqueryを使っている人)
ネイティブCSS サポート APIを介して、css ルールがサポートされているかどうかを javascript でテストすることによる代替方法を次に示します。適応するために進化するかもしれません!
最も正確な検出のために、セミコロンで区切られた多くの CSS ルールを渡すことが可能であることに注意してください。
if (CSS.supports("( -webkit-box-reflect:unset )")){
console.log("WEBKIT BROWSER")
// More math...
} else {
console.log("ENJOY")
}
if (CSS.supports("( -moz-user-select:unset )")){
console.log("FIREFOX!!!")
}
ループで使用しないように注意してください。パフォーマンスのために、ロード時に定数を設定することをお勧めします。
const ff = CSS.supports("( -moz-user-select:unset )")
if (ff){ //... }
CSS のみを使用すると、上記は次のようになります。
@supports (-webkit-box-reflect:unset) {
div {
background: red
}
}
@supports (-moz-user-select:unset) {
div {
background: green
}
}
<div>
Hello world!!
</div>
jquery または javascript を使用して、chrome および safari ブラウザーを検出しようとしています。
使用するjQuery.browser
jQuery.browser を使うべきではないと思いました。
これは、ブラウザーを検出するのはよくない考えだからです。本当にそうするつもりなら、(jQuery が関係している場合) ブラウザーを検出する最良の方法です。