【发布时间】:2009-11-10 09:12:20
【问题描述】:
我有情况:
<script
type="text/javascript"
src="http://server/some.js">
</script>
在文件 some.js 中,我需要知道同一文件 some.js 的完整路径,例如。 “http://server/some.js”。我该怎么做?
我无法更改 HTML 代码(客户端包括 JS 文件)。
【问题讨论】:
标签: javascript
我有情况:
<script
type="text/javascript"
src="http://server/some.js">
</script>
在文件 some.js 中,我需要知道同一文件 some.js 的完整路径,例如。 “http://server/some.js”。我该怎么做?
我无法更改 HTML 代码(客户端包括 JS 文件)。
【问题讨论】:
标签: javascript
试试那个
sc = document.getElementsByTagName("script");
for(idx = 0; idx < sc.length; idx++)
{
s = sc.item(idx);
if(s.src && s.src.match(/some\.js$/))
{ return s.src; }
}
【讨论】:
var idx=0,您将引入一个全局 idx 变量(除非您之前使用 var 定义了 idx)
最简单的方法就是查找要添加到文档中的最后一个脚本:
var scripts= document.getElementsByTagName('script');
var mysrc= scripts[scripts.length-1].src;
这必须在脚本的主体中完成,而不是在稍后调用的代码中。最好在脚本开头执行此操作并记住该变量,以便在必要时可以在以后的函数调用中使用它,这样它就不会受到脚本中稍后将任何新的<script> 节点插入到文档中的代码的影响。
【讨论】:
不确定它是否适用于所有浏览器,试试这个:
function getScriptFileName() {
return (new Error).fileName;
}
【讨论】:
Error 对象是非标准化的,fileName 似乎只存在于 Mozilla 中。