WEB標準:target 屬性怎么用 JS 來控制?_Web標準教程
在HTML 4.0 Strict和XHTML 1.0 STRICT里不答應在<a>標簽里使用target屬性,這是一件令網頁設計者懊惱的事。在過渡的規范里還是答應使用的。但通過一定的方法,我們可以解決這一問題。
HTMl4.0規范里拿掉了target屬性:但它添加了另外一個屬性:rel。這個屬性是用來指定包含鏈接的文檔和所鏈接文檔之間的關系的。規范里定義了其屬性值(如:next,previous,chapter,section)。在這些屬性里大多數是用來定義一個大文檔里各個小部分之間的關系的。事實上,規范里答應開發人員自由的使用非標準屬性值做特定的運用。
在這里,我們采用一個自定義值external用于rel屬性來標記一個鏈接,用來新開一個窗口。
不符合最新Web標準的鏈接代碼:
<a href="document.html" target="_blank">external link</a>
運用rel屬性:
<a href="document.html" rel="external">external link</a>
現在我們構建了一個符合Web標準的新開窗口的鏈接,我們還需要運用JavaScript是其實現新開窗口。腳本要實現的工作是當網頁加載時,找到文檔里的所有那些我們定義為rel="external"的超鏈接。
首先我們要判定瀏覽器
if (!document.getElementsByTagName) return;
getElementsByTagName是DOM1標準里一個輕易使用的方法,且它被現在的大多數瀏覽器所支持,因為一些舊的瀏覽器如Netscape 4和IE4不支持DOM1,所以我們必須通過判定這一方法是否存在來排除這些舊版本的瀏覽器。
下一步,我們通過getElementsByTagName方法取得文檔里所有的<a>標簽:
var anchors = document.getElementsByTagName("a");
anchors被賦值為包含各個<a>標簽的數組,現在我們必須遍歷各個<a>標簽并且修改它:
for (var i=0; i < anchors.length; i ) {
var anchor = anchors;
找到要實現新開窗口的<a>標簽
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") == "external")
接下來,建立屬性值target并賦值"_target"
anchor.target = "_blank",
完整的代碼:
function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i ) {
var anchor = anchors;
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") == "external")
anchor.target = "_blank";
}
}
window.onload = externalLinks;
- 相關鏈接:
- 教程說明:
Web標準教程-WEB標準:target 屬性怎么用 JS 來控制?。