2013-04-24 54 views
2

我有一个HTML文档,我用图像的源地址转换是这样的:绝对值化的图像的URL与“..”

"../foo/bar/baz.png" 

我使用氚功能绝对化图像源网址,但是“..”似乎在阻止它。它预先考虑了主机名等,但是当它出现时,它会添加一个太多的图层。

所以例如,图像的正确网址是:

"www.host.com/foo/bar.png" 

但在它出现的页面是在"www.host.com/site/baz/page.html"

在原始的HTML图像的源因此"../foo/bar.png"

但我得到的absolutized结果是:"www.host.com/site/foo/bar.png"

换句话说它会将文件树上传到“/ site /”,但它需要再增加一个。我真的不知道它是如何在原始页面上工作而没有另一个“..”我应该如何处理URL中的“..”?

回答

1

正如您在Moovweb项目中,我会建议您在使用absolutize()函数之前操纵有问题的src 之前

有没有一种简单的方法可以选择使用Tritium的图像?我建议这样做,那么操纵src属性:

$("./img[@id='']") { 
    attribute("src", "/foo/bar.png") 
} 

在这之后,你应该能够使用absolutize()功能和SRC将被正确地渲染。

+0

原来有是当时正在于源服务器端处理,但显然不能在我结束妥善处理怪异的路径模式。调整与正则表达式的路径点做的工作,有效地取消了绝对化网址重新之前绝对化。 – 2013-06-24 03:39:54

3

..意味着穿越一层;你正在使用相对路径,而不是像你应该那样的绝对路径。删除点:

<img src="/foo/bar.png">将从域的根目录加载图像。

2

第一个点到http://example.com/foo/bar.png无论什么src="/foo/bar.png"src="foo/bar.png"之间的巨大差异(注意:第一双引号后的斜杠)。
但是,第二个(不带开头斜杠)是相对URL所以输出路径取决于映像出现的文件。

这就是您获取“www.host.com/site/foo/bar.png”(相对于文件路径,上一级)的原因。

两种解决方案:
1)src="/foo/bar.png" OR
2)src="../../foo/bar.png"

我总是建议第一种方法,因为你移动的文件,即使后,你不会有改变的绝对URL。 (我很难学会)

P.S.这个规则也适用于CSS文件。 (例如,当指定背景图像URL时)如果使用绝对路径,当您更改CSS文件的目录时,您不必将头靠在墙上。