0

我正在尝试在我的 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/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)

我应该将我的基本变量定义为包含当前页面的目录

http://localhost/~yves/optimalPlayer/

我应该如何定义 var base 以获得串联结果:

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

谢谢你的建议

4

2 回答 2

1

我的方法可能是在使用之前删除基本 URL 中最终 / 之后的所有内容。把它作为你的第一行放在下面/* Global Variables */

var base = document.location.href.replace(/[^\/]+$/, '');

那个正则表达式替换应该可以解决问题。它会立即在行尾之前找到每个非斜杠并修剪它们,因此在这种情况下,它会http://localhost/~yves/optimalPlayer/index.html变成http://localhost/~yves/optimalPlayer/,这就是您所需要的。

但是,与基于正则表达式的解决方案一样,请记住,您可能会发现一些奇怪的边缘情况会中断。我很自在地说它应该适用于我能想到的所有合理情况,但你永远不能绝对确定。

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

于 2013-08-29T20:00:09.080 回答
0

尝试这个:

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);
于 2013-08-29T20:01:30.013 回答