1

ホストのWebページからこれらのスクリプトをロードするとします。

<script src="http://www.mywebsite.com/widget/widget.js?type=normal" type="text/javascript"></script>
<script src="http://www.mywebsite.com/widget/widget.js?type=rotation" type="text/javascript"></script>

そして、最初のものが終了したときにのみ2番目のものを実行したいと思います(完全に、非同期関数を含めることができます)。

どうすればいいですか?

4

4 に答える 4

2

あなたはすでにそれを正しくやっています: スクリプトはロードではなく、ページへの統合の順序で実行されます。

編集:MaxArtが指摘したように、これはあなたが探しているものではないかもしれません. 彼の答えは良いものです。ただし、一般的には、この種の問題を回避するために、javascript の通常のパターンとイベント ベースのロジックを使用することをお勧めします。

  • ほとんどのファイルでクラスと関数のみを定義します (コールバックをパラメーターとして取るものもあります)。
  • これを起動してmain一連のアクションを呼び出すファイルを用意し、非同期性はコールバックを介して処理されます。

私のメインコードは通常、(少し)次のようになります。

$(window).ready(function() {
    var myBigEngine = new BigEngine();
    myBigEngine.init(function(){
      // do other things, no need to add other layers as user events and ajax message callback will do the rest
    });
});
于 2012-06-01T07:27:55.293 に答える
1

<script>次のような2番目の宣言に defer="defer" 属性を適用してみてください

<script src="http://www.mywebsite.com/widget/widget.js?type=rotation" type="text/javascript" defer="defer" ></script>

于 2012-06-01T07:26:01.727 に答える
0

2番目のスクリプトinit関数をwindow.onloadイベントに配置できます

window.onload = function(){

// call function from second script

}

またはjQueryを使用

$(function(){

// call function from second script

});

この関数を使用して、2番目のスクリプトをイベント追加できます

function loadScript(src){
    var f=document.createElement('script');
    if(f){
        f.setAttribute("type","text/javascript");
        f.setAttribute("src",src);
        document.getElementsByTagName("head")[0].appendChild(f);
    }
}
于 2012-06-01T07:24:30.113 に答える