当前位置: 首页 > 面试题库 >

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

顾昊穹
2023-03-14
问题内容

现在我有一个链接

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

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

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

如何使用JavaScript做到这一点?

如果只有一些特定于浏览器的方法可以,所以没有相应支持的浏览器用户将“退回”到“总是使用新标签”方式。


问题答案:

您可以设置特定窗口的名称,以打开重复使用的选项卡。问题是,只要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>

您也可以将其通用化,并在文档中添加一个Click侦听器,以这种方式打开一些链接。就像是:

<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>

如果页面在同一域中,那么此时您可能还尝试对页面进行经验式刷新。



 类似资料:
  • 问题内容: 我正在使用此脚本来打印网页。我的视图呈现了此页面,而JS会照顾所有其他事情。 但是我不想为此打开新窗口。因此,我应该使用什么代替so open。同样,我也不想为。打开新窗口,所以,每当我渲染此页面时,它都会在同一页面上执行所有操作。没有新窗口,没有新标签。我该如何实现。我谷歌,但似乎没有任何工作。 问题答案: 您可以使用隐藏的 iFrame 来完成此操作(我以jquery为例): 这将

  • 问题内容: 是否可以在新标签页而不是同一标签页中打开链接? 问题答案: 您应该在锚标记中添加和。 例如: 添加不是强制性的,但这是建议的安全措施。可以在下面的链接中找到更多信息。

  • 问题内容: 如何从网址而不是从磁盘打开pdf 就像是 我想从网上打开几个文件,然后下载所有文件的合并文件。 问题答案: 我认为urllib2将为您提供所需的东西。

  • 问题内容: 我想使用Javascript在其他标签中打开新页面,但仍将重点放在当前标签上。我知道我可以这样做: 但是,当我在chrome中执行此操作时,它会闪烁新标签一会儿,然后再切换回当前标签。我想避免这种情况。 该应用程序是个人书签,因此仅需在最新的Chrome中运行。 问题答案: 更新:谷歌浏览器的版本41 似乎已更改行为。 这可以通过在属性属性设置为所需的动态生成元素上模拟+ (或打开背景

  • 问题内容: 我有以下使用Vaadin编写的代码。当用户单击按钮时,代码将打开页面。 我的问题是我有什么办法指定要在新标签页中打开页面吗? 谢谢。 问题答案: 该窗口的名字是很重要的位置。要注意的是,你还可以有一个浏览器 将 可以在新窗口中打开资源来代替。 该方法还有另一个签名,即 可能符合要求。HTH。 参考:Page(Vaadin 7.2.1 API) 。

  • 问题内容: 因此,我试图在WebDriver内的新选项卡上打开网站。我想这样做,因为使用PhantomJS为每个网站打开一个新的WebDriver大约需要3.5秒,所以我想提高速度… 我正在使用多进程python脚本,并且我想从每个页面中获取一些元素,因此工作流程如下: 但是我找不到任何方法来实现这一目标。 这是我正在使用的代码。网站之间永远都需要花时间,我需要它很快。允许使用其他工具,但是我不知