2012-12-08 23 views
16

现在我有一个链接打开URL现有尽可能

<a href="blabla" target="_blank">link</a> 

然而,这总是打开一个新的标签。我想下面的效果

  1. 如果用户已经有相同的URL选项卡,再利用该选项卡,并刷新如果可能的话
  2. 否则,打开一个新标签

我如何能实现这使用JavaScript?

如果只有一些特定于浏览器的方法,那么没有相应支持的浏览器的用户将会“后备”到始终新标签的方式。

+0

我还没有足够的评论,所以请不要选择这个作为答案,但我相信你会在这里找到一个近乎重复的问题:http://stackoverflow.com/questions/2641812 /如何检测该相同页面是否已在另一个窗口中打开即好运! –

回答

19

您可以设置特定窗口的名称,以便打开重用选项卡。问题是,只要href将相同,它将不会被重新加载。所以你不能轻易获得refresh部分。

所以,举例来说,你可以有:

<a href="blabla" target="blabla">link</a> 
<a href="foo" target="bar">link</a> 

在JS,你其实可以得到相同的,使用window.open。你也可以使用URL作为target,让您无需手动指定:

<a href="blabla" onclick="window.open(this.href, this.href); return false">link</a> 
<a href="foo" onclick="window.open(this.href, this.href); return false">link</a> 

你也可以概括,并添加点击监听到文档中,为了打开这样一些链接。喜欢的东西:

<div id="container"> 
    <a href="blabla">link</a> 
    <a href="foo">link</a> 
</div> 

<script> 
    document.getElementById("container").onclick = function(evt){ 
     if (evt.target.tagName === "A") 
      window.open(evt.target.href, evt.target.href); 

     return false; 
    } 
</script> 

如果页面是在同一个域,在这一点上,你也许可以试着做网页的经验刷新为好。

+2

不知何故,它不适合我。如果我理解了问题和答案,那么假设是,第一个链接点击将在浏览器中打开新标签,点击任何链接后,同一个浏览器标签应重用...我试过这个解决方案,但从来没有工作。它每次都会打开新选项卡。除了如果触发相同的链接,它不会打开另一个选项卡。 – Liladhar

+0

请注意,第二个Ctrl + Click浏览器(至少Chrome)会切换到此选项卡。这不是我所期望的。 – coolguy