【发布时间】:2019-08-31 22:48:48
【问题描述】:
我正在尝试查找我的 javascript 文件的绝对路径(不是 URL)。我更喜欢使用相对路径,而不是硬编码绝对路径。例如:
/static/js/index.js
/static/config/1.json
/static/config/2.json
如果我能得到index.js的绝对路径,那么我只需要../config/就可以访问这两个json文件中的任何一个。
搜索 SO 和互联网时,我会得到有关查找 URL 的建议,这些建议有效但不能解决我的问题。或者对于文件路径,使用windows.location.pathname,但我尝试的任何排列要么返回空字符串,要么返回/。
var currentDirectory = window.location.pathname.split('/').slice(0, -1).join('/');
console.log("Curr dir: " + currentDirectory);
(返回空字符串)
var location = window.location.pathname;
var directoryPath = location.substring(0, location.lastIndexOf("/")+1);
console.log(" dirPath: " + directoryPath);
(返回/)
我希望是这样的:
var absolute_path = window.function.absolute.path()
会返回说:/u/user/develop/project/server/static/js/index.js
从中我可以:(再次伪代码)
var locations = absolute_path.split("js");
# location[0] = "/u/user/develop/project/server/static"
# location[1] = "js/index.js"
var config_file_locations = locations[0] + "config/";
var absolute_path_json1 = config_file_locations + "1.json"
-- 编辑--
好的,看看window.location,它返回的 URL 如此清晰,这不是这里的答案。
【问题讨论】:
-
忘了补充,我想知道这是否根本不可能,因为它会违反安全模型。此代码将在本地网络上的龙卷风服务器上运行。它永远不会暴露在互联网上。此外,正如您所知,Javascript 不是我的强项。
-
你在开玩笑吗?您希望浏览器让您知道服务器上的文件是什么?它通常不是一个文件,它只是内存中的一些东西。 URL 是您必须在浏览器中使用的全部内容。
-
以python为例,
os.path.abspath()返回绝对路径。但听起来 index.js 不知道它从哪个路径/文件夹运行? -
python 不能在浏览器上运行;浏览器的 JS 引擎不提供对它自己的文件系统或(显然)服务器文件系统的访问
-
没错,我只是用它作为例子。我不确定javascript是否存在类似的东西。但根据@quentin 的回答,我认为我所追求的实际上是不可能的。
标签: javascript