2

クロスドメイン ajax をしなければならないので、jsonp を試します。

次に、script要素をページに動的に追加する必要がありますが、そのステータスを確認できません。

firefox/chrome/ie8+ では、

script.onLoad=function(){}
script.onError=function(){}

また、私は試しました

script.onreadystatechange=function(){}

ie<8で。

ただし、ie<8 では機能しません。

それを機能させる方法は?

ところで、ネイティブの JavaScript を使用して作成したいので、jQuery などを使用して教えてはいけません。


アップデート:

実際、サーバーからリクエストしたスクリプトはライブラリではなく、1 行の JavaScript コード (jsonp) にすぎません。そのため、タイマーを使用して確認することはできません。

4

3 に答える 3

2

IE の場合、負荷が発生したことを確認する別の方法を考えてください。たとえば、スクリプト ファイルに次の行を追加します。

script_myScriptUniqueName_loaded = true;

次に、動的追加で、そうscript.onloadでない場合null(コールバックを設定する前) を使用window.setIntervalして の存在をチェックscript_myScriptUniqueName_loadedし、タイムアウトを使用してエラーをスローし、存在する場合はコールバックを呼び出します。
終わったら忘れずにwindow.clearInterval

于 2012-09-25T00:37:51.800 に答える
2

yepnope.jsを見ると、 との両方onloadを使用しonreadystatechangeていますが、タイムアウト ループreadystate使用してスクリプト要素のプロパティをチェックしています。こちら を参照してください

于 2012-09-25T00:36:26.137 に答える
1

script 要素のloadイベントは HTML5 で導入されましたが、それ以前は frameset 要素と body 要素でのみ使用できました (ただし、ほとんどのブラウザーは img 要素にも実装されていました)。したがって、以前のブラウザをサポートしたい場合は、工夫が必要です。

1 つの解決策は、スクリプトの先頭に関数呼び出しを配置し​​て、スクリプトが読み込まれたことを示すことです。ブラウザは、スクリプト全体が読み込まれるまでスクリプト内のコードを実行しないためです。

もう 1 つは、最初のスクリプトが読み込まれて実行されるまで 2 番目のスクリプトは実行されないという前提で、最初のスクリプトの直後に「I'm loaded」関数またはフラグを含む 2 番目のスクリプトを挿入することです。

于 2012-09-25T00:38:31.777 に答える