中文:A連結標記下會自動補全href。
在使用 Ajax Link Tracker 和 MapSurface 時,我發現使用 DOM 腳本檢索 href 屬性的方式不一致。
href 屬性與其他元素屬性的不同之處在於,其值集可以相對於頁面 URL 的上下文。如果設定帶有相對 href 屬性的鏈接
測試頁
瀏覽器將查看頁面的當前 URL 並得出連結的絕對 URL。
http://www.glenn.jones.net/development/test1.html
這是問題的根源,有些瀏覽器傳回屬性的文本,而有些則傳回派生的絕對 URL。結果也因用於檢索 href 屬性的方法而異。存取屬性有以下三種常見方法:
linkobj.href;
linkobj[‘href’];
linkobj.getAttribute('href');
存取屬性的
linkobj.href
和
linkobj[‘href’];
方法總是會傳回派生的絕對 URL。
Microsoft 嘗試透過向 getAttribute 方法新增第二個參數
問題來解決此問題。第二個參數可以設定為 0,1 或 2。如果該參數設為 2,則該方法會傳回屬性文字。任何其他設定都會傳回派生的絕對 URL。
linkobj.getAttribute('href');
linkobj.getAttribute('href',2);
|
|
派生 絕對 URL |
屬性文字 |
IE
linkobj.href;
x
IE
linkobj.getAttribute('href');
x
IE
linkobj.getAttribute('href',2);
x
壁虎
linkobj.href;
x
壁虎
linkobj.getAttribute('href');
x
壁虎
linkobj.getAttribute('href',2);
x
歌劇
linkobj.href;
x
歌劇
linkobj.getAttribute('href');
x
歌劇
linkobj.getAttribute('href',2);
x
取得屬性測試頁面在IE6、Firefox 1.5和Opera 8.51上測試。
那麼 getAttribute 方法應該回傳什麼?
規定了 getAttribute 方法結構的 W3C DOM Level 2 Core 規格並未涵蓋此問題。這並不是說這兩種方法是錯的或正確的。在這一點上,規範可以解釋。
身為一名編碼員,我希望能夠存取這兩個值。應更新 DOM Core 規範來解決該問題。
在下面的評論中與吉姆進行了非常好的交流後,我接受了糾正。規格確實規定 getAttribute 應該傳回屬性值,而不是絕對 URL。微軟的做法是錯誤的。
目前我使用舊的學校物件屬性方法
linkobj.href
傳回派生的絕對URL。它在所有瀏覽器中提供最一致的結果。
有興趣的URLgetAttribute 的W3C REC DOM Level 2 核心規格getAttribute 的Gecko 文檔getAttribute 的Gecko>文件
像往常一樣,就在我完成這篇文章時,我在QuickMode 網站上發現了這個討論同一主題的錯誤報告。
getAttribute HREF 總是絕對的.html