获取当前正在执行的Javascript的Url

获取当前正在执行的Javascript的Url,javascript,path,Javascript,Path,我正在尝试查找当前正在执行的javascript的url。我知道我可以对当前页面使用window.location.href,但这不一定是正在执行的脚本的路径 非常感谢您的帮助 谢谢 编辑1:我完全愿意使用插件之类的工具来完成这项工作。不要犹豫,提出任何建议 编辑2:我需要它,这样我就可以找到当前正在执行的脚本所在位置到另一个资源的相对路径。问题是,例如,脚本运行在/js/myScript.js,我需要引用的资源是/imgs/test.png。由于.js文件可以从任何地方包含,因此无法知道.pn

我正在尝试查找当前正在执行的javascript的url。我知道我可以对当前页面使用
window.location.href
,但这不一定是正在执行的脚本的路径

非常感谢您的帮助

谢谢

编辑1:我完全愿意使用插件之类的工具来完成这项工作。不要犹豫,提出任何建议


编辑2:我需要它,这样我就可以找到当前正在执行的脚本所在位置到另一个资源的相对路径。问题是,例如,脚本运行在/js/myScript.js,我需要引用的资源是/imgs/test.png。由于.js文件可以从任何地方包含,因此无法知道.png文件的路径。

我认为JavaScript无法做到这一点。您需要一个JavaScript跟踪插件


编辑:Firebug可以帮助您,IE8调试器(按F-12)也可以帮助您。

试试这个,但我不能保证它能在我的firefox中的所有浏览器上运行它工作:

var scripts = document.getElementsByTagName("SCRIPT");
var script  = scripts[scripts.length-1].src;

var scriptName = script.match(/[^\\|^\/]+\.\w+\w?$/);
alert(scriptName);

将提醒脚本名:

基于上的类似问题,Kamarey的答案解决了我的问题

从Kamarey的回答中可以看出:

使用标签:


从现在起,此页面上的任何链接都不会被使用 在javascript或html中的内容,将 相对于基本标记,即 “”

显然,这并不是我想要的,但它解决了我面临的根本问题。通过指定基,所有请求都是相对于基规范发出的


编辑:对于任何感兴趣的人来说,jQuery方法getScript()似乎不尊重Firefox 3.5.7中的基本位置。显然,这可能不是jQuery中的实际错误,可能更像是Firefox的问题,但值得注意。在IE8中,一切似乎都正常工作。我已经向jQuery提交了一份清单,看看他们是否可以简化行为。您可以在进行跟踪。

您可以利用浏览器产生的错误,并使用try/catch查找文件的绝对位置


我编写了一个简单的函数。您可以看到

我不熟悉跟踪插件。有什么建议吗?我猜跟踪插件会降低性能?如果您解释一下为什么需要它,这会有所帮助。我需要它,这样我就可以找到从当前正在执行的脚本所在位置到另一个资源的相对路径。问题是,例如,脚本运行在/js/myScript.js,我需要引用的资源是/imgs/test.png。由于.js文件可以从任何地方包含,因此无法知道.png文件的路径。如果页面上包含多个脚本,该如何工作?在我看来,它似乎只是抓取最后一个脚本标记并显示它的名称。如果您在脚本的主体中,它就可以工作,因为它是文档中的最后一个(其余部分还没有被解析)。然后将
src
放入变量中,并在稍后需要时访问它。(忘记
scriptName
位。)我的脚本比包含在脚本中的所有内容都运行得好。使用jQuery框架,在文档就绪事件之前,我的大多数脚本实际上不会执行任何特殊操作。很抱歉给你带来了困惑。考虑到包含了六个脚本,我不想在每个脚本的开头都运行相同的getElementsByTagName。这会降低页面呈现速度,在这种情况下,这是不可接受的。我更愿意只设置一个全局根路径变量,这正是我要做的。当然,您可以获取脚本的名称,但这与它是否“正在执行”无关。如果有多个脚本怎么办?@Brian:当包含脚本时,您运行最后一个脚本src sniff,然后将其存储在特定于脚本的变量中,而不执行其他操作。这真的一点也不慢;这将比jQuery所做的任何事情都要快。然后,您可以在以后实际执行操作时使用该变量。但是是的:全局根路径变量是正常的方法,因为您经常需要它用于其他目的。在这种方法不起作用的地方,需要一个全局根:对于
defer
和HTML5
async
脚本(目前很少使用)。
<head> 
   <base href="http://www.example.com/myapp/" /> 
</head>