在引用通过JavaScript调用添加的新JS文件后调用JavaScript函数

时间:2013-01-22 17:03:59

标签: javascript html

好吧,标题可能会变得模糊,但这个想法很简单。

我有一些JavaScript代码在HTML页面的Head部分添加对JS文件的引用,在添加新的JS文件之后,我想调用这个新添加的JS中存在的函数文件。所以我有一个链接(使用javascript:eval)执行以下JS代码:

//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

如果第1部分和第2部分之间存在延迟(例如,它们位于用户依次单击的2个单独链接上),则此工作正常,但如果在一个链接上按顺序执行整个代码,则无效(我猜是因为JS文件(在第1部分中添加)还没有机会加载)。有没有让第2部分等待第1部分完全完成?,或许在调用函数calltest()之前要检索JS文件的某种延迟或等待?

2 个答案:

答案 0 :(得分:1)

这应该这样做。

window.onload = calltest;

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

script.onreadystatechange= function () {
  if (this.readyState == 'complete') calltest();
 }
 script.onload= calltest;

答案 1 :(得分:0)

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

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