2012-04-23 127 views
10

我爲我正在執行的項目創建了一個網站。 在網站的內容中,有一些可以訪問的外部網頁的鏈接。 與此同時,當用戶點擊其中一個鏈接時,他將被帶到指定的鏈接,他將不再在當前頁面上。 我想要做的是當用戶點擊鏈接時,點擊鏈接中的指定網站會出現在新標籤頁中。通過這種方式,用戶可以停留在當前頁面上,也可以在新選項卡上查看其他頁面。在新選項卡中打開鏈接

我看着在互聯網上,發現這其中似乎是有用的:

function externalLinks() 
{ 
    var anchors = document.getElementsByTagName("a"); 
    for (var i=0; i<anchors.length; i++) 
    { 
     var anchor = anchors[i]; 
     if(anchor.getAttribute("href")) 
     anchor.target = "_blank"; 
    } 
} 
window.onload = externalLinks; 

我現在面臨的問題是,我的網站的導航欄包含錨標記。所以,現在如果用戶點擊導航欄上的鏈接,它會打開一個新的標籤。我希望只有當用戶點擊我網站內容中的鏈接時纔會發生這種情況。所以如果用戶點擊導航欄中的鏈接,它不應該打開一個新的標籤,而應該把他帶到指定的目的地。

我已經嘗試添加一個類內容中的所有鏈接,並使用getElementByClassName,但它仍然沒有奏效

任何人都可以幫我這個

+1

雖然它可能似乎是一個好主意,你真不該強迫你的訪問者這樣的決定 - 請參閱:HTTP ://www.webcredible.co.uk/user-friendly-resources/web-usability/new-browser-windows.shtml – CJM 2012-04-23 10:40:54

回答

28


你可以使用HTML:

<a target="_blank" href="YourAmazingURL">Click here for Amazing URL</a> 

又如:

<a target="_blank" href="http://www.google.com/">Google</a> 

這需要目標屬性的優勢。目標屬性

的更多信息:http://www.w3schools.com/tags/att_a_target.asp 另外:http://www.w3schools.com/html/html_links.asp

編輯:

對於XHTML,只是這樣做:

<a href="YourAmazingURL" onclick="window.open(this.href,'_blank');return false;">Click here for Amazing URL</a> 

或者,再次:

<a href="http://www.google.com/" onclick="window.open(this.href,'_blank');return false;">Google</a> 

+0

問題是我只需要使用XHTML,並且在驗證頁面時說它的目標不是屬性 – 2012-04-23 09:55:14

+0

那裏 - 更新了XHTML。 – anonymous 2012-04-23 10:21:34

+0

謝謝。我也發現了一種使用jQuery來實現它的方式,但這種方式也很好地知道:-)。 – 2012-04-24 03:29:55

2

你需要使用JavaScript這個?

如果不是,您可以直接將屬性添加到HTML中的標籤。

例如:<a href="http://www.google.co.uk" target="_blank">Google</a>

這很可能會爲你做它,如果不需要的JavaScript一個簡單的方法。

+1

問題是我只需要使用XHTML,並且在驗證它所說的目標頁面時不是屬性 – 2012-04-23 09:54:50

-1

要使用document.getElementById("theidgoeshere");

要做到這一點,設置您的鏈接的id屬性,像這樣:

<a href="www.google.com" id="theidgoeshere">Google</a> 

然後,在JavaScript

var anchor = document.getElementById("theidgoeshere"); 
    if(anchor.getAttribute("href")) 
     anchor.target = "_blank"; 

另外請注意,你可能想做沒有JavaScript。只需將target="_blank"放入您的錨標記中即可。

0

如果您需要依賴於JavaScript:

基本上你只需要改變你的if -condition(檢查是否錨鏈接指向外部位置或沒有)。

所以,與其if(anchor.getAttribute("href")),使用if(anchor.getAttribute("href") && anchor.hostname!==location.hostname)

隨着一些代碼清理,你的函數應該如下所示:

function externalLinks() { 
    for(var c = document.getElementsByTagName("a"), a = 0;a < c.length;a++) { 
    var b = c[a]; 
    b.getAttribute("href") && b.hostname !== location.hostname && (b.target = "_blank") 
    } 
} 
; 
externalLinks(); 
+0

downvoter請提供任何意見downvote?謝謝! – eyecatchUp 2015-11-07 21:44:12

相關問題