なぜならModernizr.load()
、@ dm03514が言及しているように、XMLHttpRequestを介してではなく、クロスドメイン制限のない<script
タグを挿入することによってスクリプトをロードするからです。次に、スクリプトが正しく読み込まれたかどうかを確認しようとしますが、これは簡単な作業ではなく、すべてのブラウザで実行できるとは限りません。詳細については、scripts / cssの読み込みの成功を確認するために利用できるさまざまなオプションについて、さまざまなブラウザのサポートのこの再コピーを参照してください:http: //pieisgood.org/test/script-link-events/
XMLHttpRequestが失敗する理由については、MDNでクロスドメイン制限の詳細を読むことができます:https ://developer.mozilla.org/en-US/docs/HTTP_access_control
スクリプトローダーを使用する動機は次のとおりです。
- yepnopeやYUIのような条件に基づいてスクリプトをロードする
- パフォーマンス上の理由から、スクリプトを非同期でロードします(タグはページのレンダリングをブロックします)。
- 依存性注入(他のスクリプトが必要とするリソースをロードします。これはrequirejsが行うことです)
- 特定のイベントが発生したときにスクリプトをロードします(ユーザーがタブをクリックしたときにhew機能をロードします)
また、スクリプトローダーを使用する場合は、通常、アプリケーションコードを含むすべてをスクリプトローダーからロードして、アプリケーションコードがすべての依存関係にアクセスできるようにします。require.jsモデル(Google AMDモジュール)は、アプリを整理するための優れた方法です。これにより、すべてを実行する1つの大きなファイルの代わりに、特定のタスクを実行する小さなモジュールを作成して再利用できます。