在 JS 中动态加载 JS

2022-08-29 23:18:41

我有一个动态网页,我需要在另一个javascript文件中导入一个外部JS文件(在某种条件下)。IF

我试图寻找一个可行的解决方案,但它不起作用。

我尝试过使用将JS文件加载到DOM,但它也不起作用。显然,Js已加载到DOM中,但在当前的JS文件中无法访问。document.createElement()

jQuery中的解决方案也会很好


答案 1

我的猜测是,在你的仅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

答案 2

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
});