天天看點

論HTML中相對URL的選取

論HTML中相對URL的選取

HTML中的相對URL絕對是個藝術,其變化多端簡直幾近于C語言的緩沖區溢出。下面談一下偶在調試中遇到的幾個相對URL的問題。

1、真正的相對路徑

據個例子,假如你有一個調試用的伺服器位址為"http://localhost"。其下還有幾個子功能。包括"http://localhost/hello"和"http://localhost/hello/test"。這時就可以考慮使用相對路徑了。假如在/hello頁面中要連結到/hello/test頁面去。可以在連結标簽中使用href="test" target="_blank" rel="external nofollow" 就可以正确的連結過去。因為在/hello頁的目前URL是/hello,是以對于test的連結就轉換為/hello/test。

2、全局相對路徑

其實這一段的所謂相對路徑,僅僅是指不含有主機名的路徑而已。主要特征就是在相對URL的最前面是含有"/"的。這樣的路徑就是以URL的跟路徑開始計算的。比如有一個頁面/hello/test2,需要連結到/hello/test。按照方法一的寫法應該是<a href="../test" target="_blank" rel="external nofollow" >,雖然還是看的懂,但總不是那麼簡潔。是以可以考慮使用全局相對路徑。如下<a href="/hello/test" target="_blank" rel="external nofollow" >,這樣是以URL的根路徑開始尋找的,可以很好的找到需要的路徑。

全局相對路徑是一種很好的方式,可以實作在一個WEB應用的部署内部很好的連結,也不需要為了".."而暈倒。問題就是,如果一個應用的部署從"/"變成了"/app"之類的,就會出問題了。而這種情況在Tomcat等等不太适合在根路徑上配置服務的伺服器就比較常見了。

3、架構中的相對URL

架構中的相對URL就比較容易了解了。比如在一個架構中制定另一個架構頁面需要打開的相對URL,這時這個相對URL就是基于本架構頁面的。比如左側架構頁面正在顯示的頁面是/hello/test.html,而右側架構頁面正在顯示/hi/test.html。則在左側架構頁面的一個連接配接<a href="test2.html" target="_blank" rel="external nofollow" target=XXX>在右側架構頁面打開連接配接的話,則是打開/hello/test2.html。

4、架構中的JavaScript的相對

這個就比較惡心了,在左側架構頁面中的一個連接配接上使用事件來處理JS代碼。JS代碼中直接引用右側架構頁面對象,并指定相對URL,則這時的相對URL是基于原來的目的架構頁面的。在這種情況中是很容易與第3條相混淆的,應該注意。

繼續閱讀