Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用同一页面上的上一个实例调用浏览器选项卡_Javascript_Html_Tampermonkey - Fatal编程技术网

Javascript 如何使用同一页面上的上一个实例调用浏览器选项卡

Javascript 如何使用同一页面上的上一个实例调用浏览器选项卡,javascript,html,tampermonkey,Javascript,Html,Tampermonkey,我有一个带有几个链接的页面。 每个链接将在新选项卡中打开。 下次单击某个给定链接时,我希望它能调用以前打开的同一选项卡。 可能吗?怎么做? 所有页面都来自同一个域 我看到了这个答案: 似乎可以将URI存储在localStorage中,用于重复检测。 我认为这项技术可以让我检测重复,但我不知道如何瞄准特定的标签(激活它,将它放在前面)。 我不控制服务器,需要在客户端实现它(通过Tampermonkey) 出于好奇,我经常处理比特桶问题。 带有链接的页面是问题列表,其他页面是单独的问题。 我想避免

我有一个带有几个链接的页面。
每个链接将在新选项卡中打开。
下次单击某个给定链接时,我希望它能调用以前打开的同一选项卡。
可能吗?怎么做?
所有页面都来自同一个域

我看到了这个答案:
似乎可以将URI存储在localStorage中,用于重复检测。
我认为这项技术可以让我检测重复,但我不知道如何瞄准特定的标签(激活它,将它放在前面)。
我不控制服务器,需要在客户端实现它(通过Tampermonkey)

出于好奇,我经常处理比特桶问题。
带有链接的页面是问题列表,其他页面是单独的问题。
我想避免两次打开同一版本,更新两个版本,并避免数据丢失。
此外,每个页面可以有两个不同的URI,一个用于查看,另一个用于编辑。但我想我可以用JS解决它

按名称调用浏览器选项卡 您可以首先使用
window.open()
,为创建的每个选项卡指定一个名称:

让newWindow=window.open(newUrl,newWindowName);
或者在锚定标记中使用
target
属性:

<a href="http://my-new-url" href="myNewWindowName">Make New Window</a>
注意:浏览器的用户首选项设置可能仍然会阻止focus()将窗口移到前面,因此这不能保证工作正常。来自MDN web文档:

由于用户设置的原因,它可能会失败,并且在该方法返回之前,不能保证窗口位于最前面

按名称调用浏览器选项卡 您可以首先使用
window.open()
,为创建的每个选项卡指定一个名称:

让newWindow=window.open(newUrl,newWindowName);
或者在锚定标记中使用
target
属性:

<a href="http://my-new-url" href="myNewWindowName">Make New Window</a>
注意:浏览器的用户首选项设置可能仍然会阻止focus()将窗口移到前面,因此这不能保证工作正常。来自MDN web文档:

由于用户设置的原因,它可能会失败,并且在该方法返回之前,不能保证窗口位于最前面


您可以通过以下方式获取上一页的URL:

let prevURL = document.referrer;
您可以使用
windows.getAll()
从所有打开的选项卡获取URL


由此-由于安全问题,您无法以编程方式将浏览器聚焦到特定选项卡。考虑更新标题以通知用户使用<代码>文档>标题{{新标题}

> P>您可以通过以下方式获得上一页的URL:

let prevURL = document.referrer;
您可以使用
windows.getAll()
从所有打开的选项卡获取URL


由此-由于安全问题,您无法以编程方式将浏览器聚焦到特定选项卡。考虑更新标题以通知用户使用<代码>文档>标题{{新标题} < /代码>

尼斯!这似乎是可行的。我必须控制索引页的链接,并用
窗口替换它们。打开
命令。@JuanLanus我想你可以把名称放在links
target=
属性中。它通常用于
target=“_blank”
,但我认为它可以接受任何名称。@TomášZato:尝试一下,听起来对简化所需代码很有用。是的,它可以接受任何内容,所以我可以使用一个可重复的slug来添加每个问题页面,比如“issue1234”(no“#”pls)。很好!这似乎是可行的。我必须控制索引页的链接,并用
窗口替换它们。打开
命令。@JuanLanus我想你可以把名称放在links
target=
属性中。它通常用于
target=“_blank”
,但我认为它可以接受任何名称。@TomášZato:尝试一下,听起来对简化所需代码很有用。是的,它可以接受任何内容,所以我可以使用可重复的slug来添加每个问题页面,比如“issue1234”(no“#”pls)。是的,我不能,但是。。。如果我编写了一个扩展,并启用了“制表符”权限,而不是一个Tampermonkey脚本,那么我将能够使用您随意提出的windows对象。这很好!是的,我不能,但是。。。如果我编写了一个扩展,并启用了“制表符”权限,而不是一个Tampermonkey脚本,那么我将能够使用您随意提出的windows对象。这很好!