我有一些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文件的某种延迟或等待?
答案 0 :(得分:1)
这应该这样做。
window.onload = calltest;
或者将其添加到您的第一个脚本
script.onreadystatechange= function () {
if (this.readyState == 'complete') calltest();
}
script.onload= calltest;
答案 1 :(得分:0)
根据Marcell的评论,我最终采用了以下解决方案:
calltest()可能是您注入的JS文件中的最后一个语句