我有一个动态网页,我需要在另一个javascript文件中导入一个外部JS文件(在IF
条件下)。
我试图寻找一个可行的解决方案,但没有奏效。
我曾尝试使用document.createElement()
将JS文件加载到DOM中,但同样不起作用。显然,Js已加载到DOM中,但在当前JS文件中无法访问。
jQuery中的解决方案也很好
发布于 2013-01-25 19:48:59
jQuery的$.getScript()
有时会有错误,所以我使用自己的实现,如下所示:
jQuery.loadScript = function (url, callback) {
jQuery.ajax({
url: url,
dataType: 'script',
success: callback,
async: true
});
}
并像这样使用它:
if (typeof someObject == 'undefined') $.loadScript('url_to_someScript.js', function(){
//Stuff to do after someScript has loaded
});
发布于 2013-01-25 20:04:21
我的猜测是,在您的纯DOM解决方案中,您做了一些类似的事情:
var script = document.createElement('script');
script.src = something;
//do stuff with the script
首先,这不会起作用,因为脚本没有添加到文档树中,所以不会加载。此外,即使您这样做了,javascript的执行仍会继续,而另一个脚本正在加载,因此在该脚本完全加载之前,它的内容将不可用。
您可以监听脚本的load
事件,并按您所希望的那样处理结果。所以:
var script = document.createElement('script');
script.onload = function () {
//do stuff with the script
};
script.src = something;
document.head.appendChild(script); //or something of the likes
发布于 2015-07-13 09:55:04
我需要经常这样做,所以我使用下面的代码:
var loadJS = function(url, implementationCode, location){
//url is URL of external file, implementationCode is the code
//to be called from the file, location is the location to
//insert the <script> element
var scriptTag = document.createElement('script');
scriptTag.src = url;
scriptTag.onload = implementationCode;
scriptTag.onreadystatechange = implementationCode;
location.appendChild(scriptTag);
};
var yourCodeToBeCalled = function(){
//your code goes here
}
loadJS('yourcode.js', yourCodeToBeCalled, document.body);
有关更多信息,请参阅此站点的How do I include a JavaScript file in another JavaScript file?,它是我的函数想法的来源。
https://stackoverflow.com/questions/14521108
复制相似问题