在新选项卡中打开 url 或尽可能重用现有的

IT技术 javascript html tabs
2021-02-23 00:59:36

现在我有一个链接

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

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

  1. 如果用户已有具有相同 URL 的选项卡,请重用该选项卡,并尽可能刷新
  2. 否则,打开一个新标签

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

如果只有一些特定于浏览器的方法也可以,因此没有相应支持的浏览器用户将“回退”到always-new-tab 方式。

1个回答

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

因此,例如,您可以拥有:

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

在 JS 中,您实际上可以使用window.open. 您也可以使用 url as 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>

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

理解此答案的人能否将此答案编辑为更好的英语。
2021-04-19 00:59:36
请注意,第二次 Ctrl+Click 浏览器(至少是 Chrome)将切换到此选项卡。这不是我真正期望的。
2021-04-29 00:59:36
不知何故,它对我不起作用。如果我理解了问题和答案,假设是这样,首先单击链接将在浏览器中打开新选项卡,单击任何链接后,应重用相同的浏览器选项卡...我尝试过此解决方案但从未奏效。它每次都会打开新标签。除了如果触发相同的链接,它不会打开另一个选项卡。
2021-05-10 00:59:36