在HTML中,常見的URL有多種表示方式:
相對URL:
example.php
demo/example.php
./example.php
../../example.php
/example.php
絕對URL:
http://dancewithnet.com/example.php
http://dancewithnet.com:80/example.php
https://dancewithnet.com/example.php
同時HTML中有大量的元素屬性值為URL,一般利用JavaScript來取得這些URL屬性值有兩種方法:
此時頁面絕對URL是http://dancewithnet.com/
我們希望透過直接存取屬性的方式得到完整絕對URL,透過getAttribute方法得到其原始的屬性值,實際上這是一個比較理想的結果,在所有的A級瀏覽器中,能順利得到這個結果的只有Firefox和IE8,其他瀏覽器都或多或少特殊情況,具體哪些元素的屬性存在什麼樣的情況請看演示實例。
在大部分瀏覽器中存在的問題是,兩種方式都回傳的是原始屬性值,而實際應用中往往需要的是其絕對的URL,《 Dealing with unqualified HREF values 》中的解決方案太過於複雜,這裡提供一個相對簡單的解決方案,如果不考慮區別瀏覽器程式碼會非常簡單:
在IE6和IE7這兩個史前的瀏覽器身上還有一些更有意思的事情,兩種方法在HTML元素A、AREA和IMG取得的屬性值都是絕對URL,幸好微軟為getAttribute提供了第二個參數可以解決這個問題,同時也可以對IFEAM和LINK元素解決前面提到的兩種方法都傳回原始屬性的問題:
原文: http://dancewithnet.com/2009/07/27/get-right-url-from-html/
此時頁面絕對URL是http://dancewithnet.com/