符合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; 
  
發佈了102 篇原創文章 · 獲贊 4 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章