2

我有一个网站http://www.example.com

我从不同的域提供我的静态文件。例如http://www.eg.com

在我位于http://www.eg.com/js/myscript.js的 js 文件中

我有一个变量,它是一个图像。

var myvar = "images/example.gif";

我以为图片链接是http://www.eg.com/images/example.gif但它看起来(当我查看控制台时)它抓取了域名,所以它得到了http://www.example。 com/images/example.gif

这是预期的行为吗?

除了将变量硬编码为

var myvar = "http://www.eg.com/images/example.gif"; 

硬编码并不理想,好像域更改然后我需要更新两次?

4

2 回答 2

1

所有相对链接都与您在浏览器地址栏中看到的内容相关。

唯一的例外是在 CSS(例如background-images)中加载的图像,在这种情况下,路径是相对于 CSS 文件的。

编辑:虽然我没有亲自使用它,但 W3C 似乎定义了base可以满足您需求的标签

于 2013-05-20T06:43:01.790 回答
1

这是预期的行为,因为它与当前 URL 相关。

如果您需要为链接/图像使用不同的域,那么我会添加一个 var 来保存主机名并在您的 JS 文件中引用它,因此如果您移动文件,您只需在一个地方更改它。

所以:

var domain = 'http://eg.com/';
var myvar = domain + "images/example.gif";

或者,如果您不想对域进行硬编码,则可以从 JS 源属性中提取它:

HTML:

<script type="text/javascript" id="myjs" src="http://eg.com/myscript.js"></script>

在 myscript.js 中:

var myjs = document.getElementById('myjs');
var domain = myjs.getAttribute('src').replace('myscript.js','');
var myvar = domain + "images/example.gif";

您也可以只base在标题中使用标签,但有一些问题.

于 2013-05-20T06:47:09.317 回答