Javascript 如何使用jQuery定义相对于当前页面的URL

Javascript 如何使用jQuery定义相对于当前页面的URL,javascript,jquery,Javascript,Jquery,我试图在application.js中定义一些与当前页面相关的URL变量 /* Global Variables */ var base = document.location.href; var http_video_base = base + "assets/videos/"; var http_academy_banner_base = base + "assets/banners/"; var user_academy_banner_image = "golf.jpg"; http:/

我试图在application.js中定义一些与当前页面相关的URL变量

/* Global Variables */
var base = document.location.href;
var http_video_base = base + "assets/videos/";
var http_academy_banner_base = base + "assets/banners/";
var user_academy_banner_image = "golf.jpg";
http://localhost/~yves/optimalPlayer/
但当我的基变量为

http://localhost/~yves/optimalPlayer/index.html I get an error (obviously )

Failed to load resource:   
http://localhost/~yves/optimalPlayer/index.htmlassets/banners/golf.jpg
the server responded with a status of 404 (Not Found)
我应该将基本变量定义为包含当前页面的目录

/* Global Variables */
var base = document.location.href;
var http_video_base = base + "assets/videos/";
var http_academy_banner_base = base + "assets/banners/";
var user_academy_banner_image = "golf.jpg";
http://localhost/~yves/optimalPlayer/
我应该如何定义var base以获得以下串联结果:

http://localhost/~yves/optimalPlayer/assets/banners/golf.jpg

感谢您的建议

我的方法可能是在使用基本URL之前,在最终URL/之后删掉所有内容。将其作为第一行放在
/*全局变量*/
下:

var base = document.location.href.replace(/[^\/]+$/, '');
正则表达式的替换应该可以做到这一点。它会在行尾前找到每个非斜杠并修剪它们,因此在这种情况下它会变成
http://localhost/~yves/optimalPlayer/index.html
into
http://localhost/~yves/optimalPlayer/
,这正是您所需要的

不过,与基于正则表达式的解决方案一样,请记住,您可能会发现一些奇怪的边缘情况。我很乐意地说,它应该在我能想到的所有合理的情况下都有效,但你永远不能绝对肯定

编辑:正如一些人在对原始问题的评论中指出的那样,相对路径可能是更好的解决方案,但如果您打算改用绝对路径,这种正则表达式方法应该会起作用。

尝试以下方法:

var base = window.location.pathname.replace(/[^\/]+$/, ""),
    http_video_base = base + "assets/videos/",
    http_academy_banner_base = base + "assets/banners/",
    user_academy_banner_image = "golf.jpg";

var final = http_academy_banner_base + user_academy_banner_image;
console.log(final);

window.location.pathname开始怎么样?(并删除可能出现在末尾的任何特定文件名,例如
index.html
)为什么不使用相对URL?为什么需要在代码中这样做?“资产/视频/”的路径将始终相对于当前文件夹/文档。