相关疑难解决方法(0)

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

所以我正在尝试动态加载脚本并找出加载该脚本的URL路径.如果脚本是静态加载的(如何获取当前正在执行的javascript代码的文件路径),有些人给了我一个非常棒的解决方案来解决这个问题.但我需要一个动态加载的解决方案.例如:

$(function()
{   $.getScript("brilliant.js", function(data, textStatus)
    {   // do nothing   
    });
});
Run Code Online (Sandbox Code Playgroud)

"brilliant.js"在哪里:

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

理想情况下,这应该打印出"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);
        }); 
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery load include

9
推荐指数
1
解决办法
7970
查看次数

标签 统计

ajax ×1

include ×1

javascript ×1

jquery ×1

load ×1