この質問に対する明らかな答えがある場合は申し訳ありませんが、私はそれを見つけることができませんでした. jQuery 2 への切り替えを検討しており、古いブラウザーのサポートについては心配していませんが、サポートされていないブラウザーを使用しているユーザーにサイトを使用できないことを伝えたいと考えています。
ここ ( http://blog.jquery.com/2013/03/01/jquery-2-0-beta-2-released/ ) で、条件付きコメントを使用して、異なるバージョンの IE で .js ファイルを分岐できることがわかります。しかし、jQuery 2.0 は IE だけでなく、他の多くのブラウザーのサポートも終了すると私は信じています。
理想的な世界では、jQuery 2 に切り替えてから、jQuery がブラウザーをサポートしていないと通知したときに呼び出される単一の JavaScript 関数を用意します。私が見逃しているこれを行う簡単な方法はありますか?
ありがとう。
編集:
この投稿 ( http://bugs.jquery.com/ticket/13404 ) に出会い、ここに誘導されました: http://jquery.com/browser-support/。サポートに関しては、jQuery 2 は IE ブラウザー上の jQuery 1.9 とのみ異なることがわかりました。したがって、おそらくより適切な質問は、jQuery でサポートされていないブラウザー (一般的にはバージョン 2 だけではない) を検出する方法です。質問のタイトルを更新しました。
EDIT2:
機能検出はこの問題に対する最も推奨されるアプローチであるため、ここ ( http://api.jquery.com/jQuery.support/ )で jQuery サポート メソッドが関連しているようです。ただし、信頼するのはかなり難しいようです (通知なしに変更される可能性があるため)。
これが重要な質問を作成すると思います。jQuery のどの機能が古いブラウザからサポートされていない可能性があるか、または影響を受けないかを知るにはどうすればよいでしょうか? たとえば、誰かが Firefox の 4 バージョン前のコピーを持ってサイトにアクセスした場合、どの機能をテストする必要があるかわかりません。HTML5 の場合のように、jQuery が何らかの完全にサポートされている機能テストを提供できれば、それは素晴らしいことです: http://html5test.com/
EDIT3:
条件付きインクルード ステートメント (以下の回答と jQuery のサイトで強調表示されています) を使用すると、古いバージョンの IE を処理できます。ただし、他のブラウザの場合は、少し注意が必要です。関数 x、y、または z に対するブラウザーのサポートについては、jQuery に頼ることはできないため、私のアプローチは単純に基礎となる JavaScript を照会することです。CSS ベースのサポートを照会する場合は、modernizr を使用できます。JavaScript ベースのサポートについては、これは私が他のブラウザの SUPER 古いバージョンを検出するために使用する方法です。
function browser_ok() {
if (
( !Array.prototype.indexOf ) ||
( !Array.prototype.forEach ) ||
( !String.prototype.indexOf ) ||
( !String.prototype.trim ) ||
( !Function.prototype.bind ) ||
( !Object.keys ) ||
( !Object.create ) ||
( !JSON ) ||
( !JSON.stringify ) ||
( !JSON.stringify.length ) ||
( JSON.stringify.length < 3 )
)
{
return false;
}
// # local storage support
// source: http://diveintohtml5.info/storage.html
try {
var local_storage_support = ( 'localStorage' in window && window['localStorage'] !== null );
if ( !local_storage_support ) {
throw new Error("local_storage_support: failed");
}
}
catch ( e ) {
return false;
}
// # AJAX uploads
if ( !window.FormData || !window.FileReader ) {
return false;
}
// # HTML data elements
var body = $("body");
body.data("browser_support_test",42);
if ( body.data("browser_support_test") !== 42 ) {
return false;
}
else {
body.removeData("browser_support_test");
}
return true;
}
AFAICT、この関数は、jQuery の基本機能に問題を引き起こす可能性のあるすべてのブラウザーを排除するはずです。何か凝ったことをしたい場合は、必要なことがわかっている特定の機能がおそらくあるので、それを具体的に確認できます。