0

サーバーからデータを回復するために、私はXMLHttpRequestを使用し、私のコードはこれです(正常に動作します)

window.onload = function getArtists() {
    xmlhttpLoad=new XMLHttpRequest();           
    xmlhttpLoad.onreadystatechange=function() {
        if (xmlhttpLoad.readyState==4 && xmlhttpLoad.status==200) {
            // put data in an invisible HTML elem           
        }
    }
}

特定のライブラリを使用したいのですが、ドキュメントdocument.onloadが起動される前に、このデータがロードされている必要があります。これどうやってするの?上記のコードを使用できますが、データが読み込まれるまでHTML解析をブロックできますか?私は次のようなものを意味します

<head>
    <script>
        // block parsing until data are loaded
        // put data from server in a variable
    </script>
    <script src="newLib.js"></script>
<head>
4

3 に答える 3

2

AJAX 呼び出しを に設定してみるとasync = false、終了するまでページの実行が停止します。

于 2012-07-03T15:30:34.970 に答える
1

イベントを使用せずload、コードを直接実行するだけの場合、スクリプト ブロックが解析されるとすぐに開始されます。

次のブロックの解析を AJAX 応答まで待機させるには、同期要求を行う必要があります。これを行うには、呼び出しfalseで 3 番目のパラメーター (async) を指定します。open

<head>
  <script type="text/javascript">

  xmlhttpLoad=new XMLHttpRequest();
  xmlhttpLoad.onreadystatechange=function() {
    if (xmlhttpLoad.readyState==4 && xmlhttpLoad.status==200) {
        // put data in an invisible HTML elem           
    }
  }
  xmlhttpLoad.open("get", "somepage", false);

  </script>
  <script type="text/javascript" src="newLib.js"></script>
<head>

}

于 2012-07-03T15:34:35.530 に答える
1

データの準備ができたら、ライブラリをロードできます。

xmlhttpLoad=new XMLHttpRequest();
xmlhttpLoad.onreadystatechange=function() {
    if (xmlhttpLoad.readyState==4 && xmlhttpLoad.status==200) {
        // put data in an invisible HTML elem
        var script = document.createElement("script");
        script.src = "newLib.js";
        document.getElementsByTagName("head")[0].appendChild(script);
    }
}
xmlhttpLoad.open("get", "somepage", false);
于 2012-07-03T15:44:36.040 に答える