HTMl4.0規(guī)范里拿掉了target屬性.但它添加了另外一個(gè)屬性:rel.這個(gè)屬性是用來(lái)指定包含鏈接的文檔和所鏈接文檔之間的關(guān)系的.規(guī)范里定義了其屬性值(如:next,previous,chapter,section),在這些屬性里大多數(shù)是用來(lái)定義一個(gè)大文檔里各個(gè)小部分之間的關(guān)系的.事實(shí)上.規(guī)范里允許開發(fā)人員自由的使用非標(biāo)準(zhǔn)屬性值做特定的運(yùn)用.不符合最新Web標(biāo)準(zhǔn)的鏈接代碼:
<a href="document.html" target="_blank">external link</a>
運(yùn)用rel屬性:
<a href="document.html" rel="external">external link</a>
現(xiàn)在我們構(gòu)建了一個(gè)符合Web標(biāo)準(zhǔn)的新開窗口的鏈接,我們還需要運(yùn)用JavaScript是其實(shí)現(xiàn)新開窗口.腳本要實(shí)現(xiàn)的工作是當(dāng)網(wǎng)頁(yè)加載時(shí),找到文檔里的所有那些我們定義為rel="external"的超鏈接.首先我們要判斷瀏覽器.
if (!document.getElementsByTagName) return;
getElementsByTagName是DOM1標(biāo)準(zhǔn)里一個(gè)容易使用的方法,且它被現(xiàn)在的大多數(shù)瀏覽器所支持,因?yàn)橐恍┡f的瀏覽器如Netscape 4和IE4不支持DOM1,所以我們必須通過(guò)判定這一方法是否存在來(lái)排除這些舊版本的瀏覽器.
下一步,我們通過(guò)getElementsByTagName方法取得文檔里所有的<a>標(biāo)簽:
var anchors = document.getElementsByTagName("a");
anchors被賦值為包含各個(gè)<a>標(biāo)簽的數(shù)組,現(xiàn)在我們必須遍歷各個(gè)<a>標(biāo)簽并且修改它:
for (var i=0; i < anchors.length; i++) {
var anchor = anchors;
找到要實(shí)現(xiàn)新開窗口的<a>標(biāo)簽
以下是引用片段:
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") == "external")
接下來(lái).建立屬性值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;
【 微信掃一掃 】