2012-03-22 6 views
0

私は、すべてのユーザーが来年より最新のブラウザにアップグレードするまで、古いブラウザ(IE 7など)をサポートする必要があるJavaScriptを作成しています。一時的なポリフィルとしてのjQuery

私はこのように、一時的なポリフィルようにjQueryを使用して考えていた:

var flag=0; 
window.JSON||(flag=1); 
document.querySelectorAll||(flag=1); 
if (flag===1) { 
    // load jQuery here 
} 
else { 
    // no need for jQuery 
} 

は、このアプローチは理にかなっていますか?より良い方法がありますか?

ライブデモがここhttp://jsfiddle.net/3mzxr/

+0

あなたは何を正確に書いていますか? Jqueryはjsonのためのものではなく、他の多くの機能を備えており、ほとんどの場合ブラウザクラッピングを非常にうまく補うことができます。 –

+0

あなたは何をしたいのか分かりません。もしあなたがユーザーのブラウザを検出し、コードを変更したいのであれば。 http://api.jquery.com/jQuery.browser/を使用@ –

+0

@Rup良い点、私はまた、myJSON = window.JSON || $ .JSONのようなラッパー関数を書く必要があります – Christophe

答えて

3

完全なアプローチは非常に妥当です。しかし、必ずしもjQueryを使う必要はありません。

セレクタ機能の場合、セレクタエンジンとしてSizzleを使用するjQuery(30+ KB)全体を必要とせずに、Sizzle(5KBの縮小とgzip)を直接使用できます。 (シズル自体は[autofocus]のようなブール属性セレクタを使用できないことに関連長年bugを持っていること、しかし注意してください。何らかの理由で、バグがシズルレベルでそれを固定するのではなく、jQueryのレベルで回避される。)JSONについては

pure-JS JSON implementation(2.5 KB)を使用できます。

また、JSONを支持するquerySelectorAll()ためのサポートを有することを意味すると仮定することなく直接(window.JSON JSONのオブジェクトとqSAためdocument.querySelectorAllをチェックする)特徴を検出するために一般的に良いでしょう。

+0

私はそれが私のコードがしていることだと思います、個々に機能を検出する?私は特定のライブラリの利点を理解していますが、それらを別々にロードすることもコストがかかります。 jQueryは良い妥協のようだった。 – Christophe

+0

あなたのコードによると、 'window.JSON'や' document.querySelectorAll'がないと 'flag'の値は' 1'になります。別々のファイルに関しては、2つのJSライブラリを1つのファイルにまとめることはできません。合計サイズはjQueryのサイズ(〜32 KB)よりもずっと小さくなります(〜7.5 KB)。 –

+0

大丈夫ですが、ファイルに参加すればコードは大丈夫ですよね? ;-) – Christophe

1

ありません、私はこれをしないだろう。

ポリフィルが必要な場合は、yepnopeのようなローダーやpolyfillの特定のポリフィルスクリプトで簡単に行うことができます。

+0

オプションのjQueryは私の場合には良い妥協のように思えました。私は複数のHTTP要求(最初のyepnope必須、おそらくいくつかのpolyfills)のコストに懸念しています。 – Christophe

関連する問題