0

好的,标题可能有点模糊,但这个想法很简单。

我有一些 JavaScript 代码在 HTML 页面的 Head 部分添加对 JS 文件的引用,在添加新的 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 个单独的链接上),这可以正常工作,但如果整个代码在一个链接上按顺序执行(我猜因为 JS 文件(在第 1 部分中添加)还没有机会加载)。无论如何让第 2 部分等待第 1 部分完全完成?,也许是某种延迟或在调用函数 calltest() 之前等待检索 JS 文件?

4

2 回答 2

1

这应该这样做。

window.onload = calltest;

或者也许将其添加到您的第一个脚本中

script.onreadystatechange= function () {
  if (this.readyState == 'complete') calltest();
 }
 script.onload= calltest;
于 2013-01-22T20:17:46.307 回答
0

根据 Marcell 的评论,我最终采用了以下解决方案:

calltest() 可能是您注入的 JS 文件中的最后一条语句

于 2013-01-25T12:17:39.630 回答