2009-05-30 119 views
0

我知道這是一個常見的要求,並且在野外有很多答案。如果有人能夠在新窗口中提供一個僅從HTML文件打開外部鏈接的正確腳本,我將不勝感激。如何通過JavaScript在新瀏覽器窗口中僅打開外部鏈接?

+0

你這是什麼意思是由外部? – Gumbo 2009-05-30 20:28:57

+0

對不完整的信息。我的意思是,如果我的網站是www.mysite.com,任何標記,其中有一些其他域然而mysite的href是外部對我來說 – theraneman 2009-05-30 20:30:40

回答

4

您可以使用jQuery這個:

$(document).ready(function(){ 
    $("a[href^='http']:not([href*='"+location.hostname+"'])").attr("target","_blank"); 
}); 

它應與HTTP和HTTPS鏈接。

1

具體代碼將決定您是否使用純DOM腳本或任何Javascript框架。但一般來說,這是你要做的:

  1. 設置所有錨的onclick回調。

  2. 在您的回調中,檢查鏈接的href屬性是否轉到外部站點。您可以使用多種方式來執行此操作,但最簡單的方法可能是在URL上使用簡單的正則表達式。

  3. 如果不是外部的,則允許鏈接正常進行(即返回true等)。

  4. 如果是外部的,在新窗口中打開,然後返回false。

打開Javascript中一個新的窗口很簡單:

window.open('http://www.google.com');

2

我在自己的網站上使用了一點JavaScript。然後,我有一個風格的設置修改鏈接(它增加了一個小圖像/全球範圍內,隱約MSDN等。製作的鏈接打開新頁面也將通過修改目標屬性是微不足道的。

if (document.links) {    
    for (var i = 0; i < document.links.length; i++) { 
     l = document.links[i].href; 
     if (l.indexOf('http://www.mysite.com')!=0 && 
      l.indexOf('http://udv.mysite.com')!=0 && 
      l.indexOf('http://')==0) { 
      c = document.links[i]; 
      if (c.className == "dontModify") continue; 
      c.className = c.className + " external"; 
      if (c.title != "") { 
       c.title = "External link: " + c.title; 
      } 
     } 
    } 
} 
相關問題