2012-04-23 128 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

相关问题