2013-04-24 52 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文件的目錄時,您不必將頭靠在牆上。