小编典典

动态加载时获取当前正在执行的js文件的url

ajax

因此,我尝试动态加载脚本并找出加载该脚本的URL路径。因此,如果脚本是静态加载的,那么有人为我提供了一个非常棒的解决方案如何获取当前正在执行的javascript代码的文件路径。但是我需要一个动态加载的解决方案。例如:

$(function()
{   $.getScript("brilliant.js", function(data, textStatus)
    {   // do nothing   
    });
});

其中“ brilliant.js”具有:

var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length-1].src;
alert("THIS IS: "+src);

理想情况下,应打印出“ brilliant.js”或“ 〈hostname + basepath〉 / brilliant.js”

当前brilliant.js适用于静态包含的脚本,但不适用于动态包含的脚本(如$
.getScript)。有人有主意吗?dom中是否有某个地方可以存储所有已加载的脚本?

编辑:Andras提供了一个很好的解决方案,尽管它可能仅适用于jQuery。因为那可能是最受欢迎的库,而且绝对是我要使用的库。它可能也可以扩展到其他库。这是我的简化版本:

var scriptUri;
curScriptUrl(function(x)
{   scriptUri = x;
    alert(scriptUri);
});

function curScriptUrl(callback)
{   var scripts = document.getElementsByTagName("script");
    var scriptURI = scripts[scripts.length-1].src;

    if(scriptURI != "")         // static include
    {   callback(scriptURI);
    }else if($ != undefined)    // jQuery ajax
    {   $(document).ajaxSuccess(function(e, xhr, s)
        {   callback(s.url);
        }); 
    }
}

阅读 484

收藏
2020-07-26

共1个答案

小编典典

当您的脚本加载有jQuery(我想还有其他框架)时,您的脚本将与原始HTML文档中的脚本变得无法区分。

jQuery向您的脚本发出请求,并将回复作为