在JavaScript中是否有一个方法可以找到执行脚本的路径/ uri。
例如:
index.html
包含一个JavaScript文件stuff.js
,由于stuff.js
文件取决于./commons.js
,因此它希望在页面中也包含它。问题是stuff.js
只知道./commons.js
与其自身的相对路径,并且不知道完整的URL /路径。
index.html
包含stuff.js
个<script src="http://example.net/js/stuff.js?key=value" />
文件,stuff.js
文件想要读取key
的值。怎么样?
更新:有没有标准方法来执行此操作?即使在选秀状态? (我可以通过答案找出答案,答案是“不”。感谢所有回答)。
答案 0 :(得分:5)
这应该为您提供当前脚本的完整路径(如果在请求时加载,则可能无效)。
var scripts = document.getElementsByTagName("script");
var thisScript = scripts[scripts.length-1];
var thisScriptsSrc = thisScript.src;
答案 1 :(得分:3)
如果您的脚本知道它被称为“stuff.js”,那么它可以查看DOM中的所有脚本标记。
var scripts = document.getElementsByTagName('script');
然后它可以查看其名称的“src”属性。然而,对我而言,这似乎是你应该在服务器端真正解决的问题。
答案 2 :(得分:1)
script.aculo.us(source)解决了类似的问题。这是相关代码
var js = /scriptaculous\.js(\?.*)?$/;
$$('script[src]').findAll(function(s) {
return s.src.match(js);
}).each(function(s) {
var path = s.src.replace(js, ''),
includes = s.src.match(/\?.*load=([a-z,]*)/);
(includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
function(include) { Scriptaculous.require(path+include+'.js') });
});
(某些部分,如.each需要原型)