在 JS 中动态加载 JS
2022-08-29 23:18:41
我有一个动态网页,我需要在另一个javascript文件中导入一个外部JS文件(在某种条件下)。IF
我试图寻找一个可行的解决方案,但它不起作用。
我尝试过使用将JS文件加载到DOM,但它也不起作用。显然,Js已加载到DOM中,但在当前的JS文件中无法访问。document.createElement()
jQuery中的解决方案也会很好
我有一个动态网页,我需要在另一个javascript文件中导入一个外部JS文件(在某种条件下)。IF
我试图寻找一个可行的解决方案,但它不起作用。
我尝试过使用将JS文件加载到DOM,但它也不起作用。显然,Js已加载到DOM中,但在当前的JS文件中无法访问。document.createElement()
jQuery中的解决方案也会很好
我的猜测是,在你的仅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
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
});