2017-08-31 22 views
0

サーバーから返されたスクリプトが読み込まれています...オブジェクトにオブジェクトが定義されています...スクリプトを考慮し、新しいオブジェクトを作成し、それゆえ、これはオブジェクトが見つからないエラーを投げているように、ケースではありませんページ...にロードされたオブジェクト定義するために...ここにオブジェクトが定義されていません...スクリプトを動的に読み込んで定義されたオブジェクトを作成するとエラーが発生します

for(var i=0; i < paths; i++){ 
    var script = document.createElement('script'); 
    script.type='text/javascript'; 
    script.src=paths[i].src; 
    document.body.appendChild(script); 
} 
var new_obj = new object_name(a, b, c); // object_name not found 

...コードがどのように見えるかです私はスクリプトが正常に要素のタブで本文に追加されていることがわかります。

+0

あなたは() '' script.onload'イベントが発生した後まで、 '新しいobject_nameと遅延したことがありますか? – nnnnnn

+0

いいえ...しようとしませんでした... forループにロードされたファイルがいくつかあります...この特定のスクリプトのためにどのようにonloadを使うべきですか? –

+0

ループの実行を遅らせるためにonload insideを使用する方法はありますか? –

答えて

0
....間違っていただきました!教えてください...私は手動でページ本体の最後にスクリプトをロードしようとしたと私は動的にファイルを追加しているときには、そのように働いていないが、

asyncプロパティをfalse(順序で同期してスクリプトをロードする)に設定し、onloadイベントを実装して、スクリプトがロードされているかどうかを確認できます。以下のコードは実装を示しています。私は実装が間違っているかもしれませんし、配列(ループ)に基づいてスクリプトをロードし、ロードされたすべてのファイルをチェックするためのよりよい方法があるかもしれません。

<script> 
     window.onload = function() { LoadFunctions(); } 
     var paths = ["test.js", "test2.js"]; 

     function LoadFunctions() { 
      for(var i=0; i < paths.length; i++){ 
       var script = document.createElement('script'); 
       script.type='text/javascript'; 
       script.src=paths[i]; 
       script.async = false; 
       script.onload = function() { callFunctions(); } 
       document.head.appendChild(script); 
      } 
     } 

     function callFunctions(){ 
      if (typeof test1 != "undefined") test1(); //Check for function in test.js whether loaded or not then execute it 
      if (typeof test2 != "undefined") test2(); //Check for function in test2.js whether loaded or not then execute it 
     } 
</script> 

test.js

function test1(){ 
    alert("Alert from test.js"); 
} 

test2.js

function test2(){ 
    alert("Alert from test2.js"); 
} 
関連する問題