在新标签页中打开网址或尽可能重复使用现有网址

Xia*_*Jia 21 html javascript tabs

现在我有一个链接

<a href="blabla" target="_blank">link</a>
Run Code Online (Sandbox Code Playgroud)

但是,这总是打开一个新选项卡.我想要以下效果

  1. 如果用户已具有具有相同URL的选项卡,请重复使用该选项卡,并在可能的情况下刷新
  2. 否则,打开一个新选项卡

如何使用JavaScript实现这一目标?

如果只有一些特定于浏览器的方法,那就没关系,因此没有相应支持的浏览器用户将"回退"到always-new-tab方式.

ZER*_*ER0 24

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

所以,例如,您可以:

<a href="blabla" target="blabla">link</a>
<a href="foo" target="bar">link</a>
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

您还可以概括并向文档添加单击侦听器,以便以这种方式打开某些链接.就像是:

<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>
Run Code Online (Sandbox Code Playgroud)

如果页面位于同一个域中,此时您可能也尝试对页面进行经验刷新.

  • 不知怎的,它不适合我.如果我理解了问题和答案,那么假设是,首先链接点击将打开浏览器中的新选项卡,点击任何链接后,应该重复使用相同的浏览器选项卡...我尝试了这个解决方案,但从未工作过.它每次都会打开新标签.除非触发相同的链接,否则它不会打开另一个选项卡. (2认同)
  • 理解这个答案的人可以将此答案编辑成更好的英语吗? (2认同)