タイトルは少し曖昧かもしれませんが、アイデアは静かでシンプルです。
HTML ページの Head セクションに JS ファイルへの参照を追加する JavaScript コードが少しあります。新しい JS ファイルが追加された後、この新しく追加された JS ファイル内に存在する関数を呼び出したいと思います。したがって、次の JS コードを実行するリンク (javascript:eval を使用) があります。
//PART 1
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'http://localhost/test.js');
head.appendChild(script);
//wait for JS file to load should go here
//PART 2
calltest(); //calltest is a function that exists within http://localhost/test.js
これは、PART 1 と PART 2 の間に遅延がある場合 (たとえば、ユーザーが順番にクリックする 2 つの別々のリンク上にある場合) は正常に機能しますが、コード全体が 1 つのリンクで順番に実行される場合は機能しません (私は推測しています)。 JS ファイル (パート 1 で追加) をまだロードする機会がなかったからです)。PART 2 を PART 1 が完全に完了するまで待機させる方法はありますか? おそらく、関数 calltest() を呼び出す前に、何らかの遅延または JS ファイルの取得を待機する必要がありますか?