Javascript 如何使用jQuery定义相对于当前页面的URL
我试图在application.js中定义一些与当前页面相关的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:/
/* 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
intohttp://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?为什么需要在代码中这样做?“资产/视频/”的路径将始终相对于当前文件夹/文档。