是否有一种优雅的方式可以在新标签中打开外部链接,可以重复使用?

时间:2014-12-29 06:04:26

标签: html javascript hyperlink anchor

所以这就是我到目前为止所做的:

<script>
var win;
function OpenInNewTab(url )
{
  // var win;
  if (win)
  {
     win.close();
  }
  win   =window.open(url, 'myWin');
  win.focus();
}
</script>

然后我的链接就像这样(为了利用Javascript功能):

<li><a href="#" onclick="OpenInNewTab('http://www.anti-agingfirewalls.com/');">Anti-Aging Firewalls</a></li> 

问题是,对于我网页上的所有网址,此解决方案无法向上扩展。这意味着我必须为每个我希望以这种方式行事的URL调用onclick。是否有一种优雅的方式来扩展此解决方案,以便我不必继续为每个链接键入“onclick”? (或者至少减少继续打字的努力?)

4 个答案:

答案 0 :(得分:2)

只需让这些链接具有正常的href值(即链接指向的网址),并为其提供rel属性值external,以表明您希望它们在一个新标签。然后,只需对此属性值进行小型JavaScript代码段搜索,然后进行更改,以便在新标签页中打开链接。

这很好,因为即使JavaScript被禁用或以其他方式失败,链接仍然有效。

<li><a href="http://www.anti-agingfirewalls.com/" rel="external">Anti-Aging Firewalls</a></li>

<script>
function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}
window.onload = externalLinks;
</script>

This article已经过时但很好地解释了。如果你使用像jQuery这样的框架,它也可以简化。

答案 1 :(得分:1)

target="_blank"添加到您的主播是最简单的方法。

<a href="#" target="_blank">anchor</a>

如果您不想修改页面中的每个锚元素(这是脏工作),您可以在<base>中添加<head>元素:

<base target="_blank">

或者,您可以使用JavaScript在DOM ready上批量添加该属性:

var anchors = document.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++) {
    anchors[i].target = "_blank";
}

答案 2 :(得分:0)

为什么你不在这里使用目标属性?

a href =“some like here”target =“_ blank”&gt; Google

答案 3 :(得分:0)

&#34;可以重复使用,&#34;是的,绝对。

使用目标属性,而不是将其设置为_blank,为其命名。

以下标记会将链接打开到一个新的空标签中,因此点击三个链接将打开三个标签:

<a href="/path/to/link" target="_blank">click here</a>

但是以下标记会打开指向单个指定标签的链接,当后续链接被跟踪时,它会被重复使用:

<a href="/path/to/link" target="mytab">click here</a>

将目标设置为您想要的任何名称,并且所有指向该目标的链接都可以在同一选项卡中打开。如果尚未存在具有该名称的选项卡,则将打开一个新选项卡。

自Netscape引入帧以来,此功能一直存在。今天大多数人只使用_self或_blank作为目标,但使用命名目标仍然有效。