1

私はこの疑問を頭に入れ続けています。そのURLからスクリプトをロードする前に、URLが存在するかどうかをテストしたいのですが、XMLHTTPRequestsを使用しているため、多くの人が知っているように、そのURLからスクリプトをロードしようとすると失敗します。このメソッドを使用して、サーバーからGETを実行するスクリプトと同じではないファイルをGETすると、元に戻りis not allowed by Access-Control-Allow-Originます。

では、Modernizr.load()なぜメソッドは理論的にスクリプトをロードでき、実際に何かがあるかどうかさえわかりません。

4

1 に答える 1

2

なぜなら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

スクリプトローダーを使用する動機は次のとおりです。

  1. yepnopeやYUIのような条件に基づいてスクリプトをロードする
  2. パフォーマンス上の理由から、スクリプトを非同期でロードします(タグはページのレンダリングをブロックします)。
  3. 依存性注入(他のスクリプトが必要とするリソースをロードします。これはrequirejsが行うことです)
  4. 特定のイベントが発生したときにスクリプトをロードします(ユーザーがタブをクリックしたときにhew機能をロードします)

また、スクリプトローダーを使用する場合は、通常、アプリケーションコードを含むすべてをスクリプトローダーからロードして、アプリケーションコードがすべての依存関係にアクセスできるようにします。require.jsモデル(Google AMDモジュール)は、アプリを整理するための優れた方法です。これにより、すべてを実行する1つの大きなファイルの代わりに、特定のタスクを実行する小さなモジュールを作成して再利用できます。

于 2012-10-21T20:30:45.807 に答える