2009-05-30 108 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; 
      } 
     } 
    } 
}