引用通过JavaScript调用添加的新JS文件后调用JavaScript函数
好吧,标题可能有点含糊,但想法很简单 我有一段JavaScript代码,在HTML页面的Head部分添加了对JS文件的引用,在添加了新的JS文件之后,我想调用这个新添加的JS文件中存在的函数。因此,我有一个链接(使用javascript:eval)来执行以下JS代码:引用通过JavaScript调用添加的新JS文件后调用JavaScript函数,javascript,html,Javascript,Html,好吧,标题可能有点含糊,但想法很简单 我有一段JavaScript代码,在HTML页面的Head部分添加了对JS文件的引用,在添加了新的JS文件之后,我想调用这个新添加的JS文件中存在的函数。因此,我有一个链接(使用javascript:eval)来执行以下JS代码: //PART 1 var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); scrip
//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部分之间存在延迟(例如,它们位于用户按顺序单击的两个单独的链接上),那么这可以正常工作,但如果整个代码按顺序在一个链接上执行,则不起作用(我猜是因为JS文件(添加在第1部分中)还没有机会加载)。在调用函数calltest()之前,是否有必要让第2部分等待第1部分完全完成?可能是某种延迟或等待要检索的JS文件?这应该可以做到
window.onload = calltest;
或者将此添加到您的第一个脚本中
script.onreadystatechange= function () {
if (this.readyState == 'complete') calltest();
}
script.onload= calltest;
根据Marcell的评论,我建议采用以下解决方案:
calltest()可能是您注入的JS文件中的最后一条语句,例如,
calltest()
可能是您注入的JS文件中的最后一条语句。检查这篇文章,这两种技术都解决了我的问题。。。我选择马塞尔只是因为它简单一点。谢谢