在一個新的視窗中打開離線鏈結 

HTML 4XHTML 1中,是沒有鏈結的目標屬性的(target attribute)。關於這點的一個解釋是網頁不應該在新視窗中打開鏈結,另一個原因是目標(targeting)沒有實際的語義,因此不能在HTML中進行定義。

 

還有其他的解釋,都很長(而且很乏味),但是你需要找到一個解決的方法。無論是不是你自己的觀點,這都是網頁開發客戶的一個常見要求。

解決方法

 

下面的腳本可以通過rel屬性識別外部的鏈結,rel屬性是描述一個連接和它的目標網站之間關係的,所以使用它來識別指向其他網站的鏈結是語法上可行的:

如果外部的鏈結是那樣識別的,一個單獨的document.onclick事件處理就可以處理這些鏈結的所有點擊:

討論

使用一個單獨的、文檔範圍內(document-wide)的handler是最有效的方法——這比重複將所有的鏈結與一個handler連接起來要好的多。我們可以查看哪些元素通過指向event target屬性而被點擊。瞭解更多關於事件(events)及事件屬性(event properties)的內容,請見第13章內容,我們在這裏只做一個簡單的總結。

 

目前的流覽器使用兩種不同的事件模型(event models),由腳本確定哪一個用來查找e——Mozilla流覽器用的就是這種,而且很多流覽器也都開始採用這種——與IE流覽器不同,IE流覽器使用的是window.event

 

Target Object(如果不是null)可以是如下三種中的一種:鏈結元素節點(link element node),鏈結內部的元素或文本節點,或者其他的節點。我們希望我們的腳本能對前兩種情況進行處理,但是最後一種情況增加的點擊可以被安全的忽略。我們要做的就是追蹤它的父節點,知道我們找到一個連接或者找到body element

 

一旦我們有了一個統一的目標鏈結,我們需要使用正確的值來檢查rel屬性,如果存在,我們可以使用鏈結的href打開一個視窗,如果所有的都是成功的(根據新視窗的關閉屬性判斷),handler會返回假值(false),防止繼續使用原來的鏈結。

 

將一個鏈結指向window.open,而不進行定義,將會產生一個默認設置的視窗——同時會有一個連接是target=_blank”。

     第一個測試  

我們使用getAttributerel進行第一個測試,因為你只有確定被懷疑的屬性已經被賦值了你才能確定是沒有問題的。我們不能直接測試target.rel,因為它可能是null或者undefined在後面的內容中,我們就這部分內容有詳細的描述

推薦給同仁

Tell a Friend 

您想要瞭解更多的免費小竅門以便提升你的網站排名嗎?
請馬上聯繫我們網站管理員:
MSN: chenlinwu@cmmail.com 
Email: info@rank-ad.com