通过JavaScript访问浏览器中的其他选项卡/窗口

时间:2014-04-29 06:08:34

标签: javascript browser tabs

我在一个标签中有一个JavaScript应用程序,如果我点击我页面上的某个链接,它就会打开。如果我再次单击该链接,我需要检查该选项卡是否已全部打开 - 如果是,则切换到该选项卡并执行某些操作,否则打开新选项卡。

不幸的是使用

var myApp = window.open("http://www.mypage.com/myapp.html", "My App");
if(myApp){

不会帮助我,因为我不能依赖URL,因为我在使用的每个环境中的URL都会有所不同。

如果我不能依赖URL,我该如何实现?我唯一能检查的是标签的名称 - 它总是一样的。我该如何访问浏览器的标签数组?

谢谢!

4 个答案:

答案 0 :(得分:1)

据我了解,您无法访问浏览器的标签数组(当然不能通过JavaScript)。这将是客户端的安全漏洞。您应该将每个浏览器选项卡视为其自己的浏览器实例 - 不知道任何其他选项卡。

答案 1 :(得分:1)

如果已使用Cookie /本地存储打开了标签,则可以跟踪该标签。 将值"isOpened=true"保存在Cookie或localStorage中,并确保在该选项卡处于关闭状态或用户使用"onunload"事件导航到其他页面时从中删除值。

但是您要打开的页面应该在同一个域上以访问/设置Cookie。

如果用户只是通过复制链接打开页面,我们仍然无法做任何事情。

答案 2 :(得分:0)

当你使用javascript打开新窗口时你可以这样做你可以在那个元素上添加一个虚拟属性,说“data-isOpend ='no'” 当用户点击该元素时,您可以将该属性更改为“data-isOpened ='yes'”,并且在打开新窗口之前在javascript函数中,您必须检查data-isOpend =='no'然后打开在新窗口中链接其他什么都不做

答案 3 :(得分:0)

(如果有任何其他开发人员来这里寻找解决方案,就像我一样,只是留下一个不同的ans :),

我们可以在创建选项卡时为其指定名称  例如。

function view_preview()
{
  var abc;
  if(abc!=null){
    abc.close();
  }
  var url=some_link
  abc=window.open(url,'tab_name');
}

在这里,我们打开一个新选项卡,如果该选项卡已经打开,我们正在“刷新”它。