【问题标题】:Activate an opened window tab when a link from another window is clicked单击另一个窗口的链接时激活打开的窗口选项卡
【发布时间】:2018-01-30 15:57:39
【问题描述】:

我想知道当我点击来自不同窗口的链接时是否可以激活打开的窗口选项卡。

例如我单击网站 A 中的 _blank 链接,这将为网站 B 打开一个新窗口。现在,通常如果我想从网站 B 返回网站 A,我必须关闭网站 B 或手动查找网站 A。

是否可以在网站 B 中创建一个链接来激活已经打开的网站 A?

【问题讨论】:

  • 您的意思是您在一个标签页中打开了网站 A,在另一个标签页中打开了 B。当您点击网站 B 上的链接时,浏览器应该切换到网站 A 选项卡吗?
  • 如果这是你想要的,恐怕你做不到。请参阅此 - stackoverflow.com/questions/15601190/…,因为它在大多数浏览器中被主动阻止。
  • 没错
  • 2 个不同的网站?没有。可以使用带有间隔和本地存储的用户脚本。但是对于普通的 javascript 和两个不同的网站,这是完全不可能的。
  • @user5014677 抱歉,我没有说明...这两个站点是您的,而不是外部站点。换句话说,你开发了它们,所以你可以随心所欲地操纵它们。

标签: javascript jquery html windows tabs


【解决方案1】:

由于明显的安全原因,这是不可能的:D

如果您在此上下文中将选项卡称为窗口,则可以尝试将您的网站作为新窗口弹出并在其上调用 focus()

yourPopupName.focus();

可以专注于弹出的窗口。

参考How to change browser focus from one tab to another

【讨论】:

    【解决方案2】:

    理论上这是不可能的,但也许这可行:

    基本上,因为它是同一个网站,所以当你需要返回 tabA 时,你可以像这样在 tabB 的本地存储中存储一个变量:

    localStorage['update'] = true
    

    然后在您按照示例打开 tabB 的 tabA 上,您可以设置一个间隔来检查它是否需要更新或使用 setInterval 函数进行什么操作。

    setInterval(function(){
         if (localStorage['update'] == true){
           localStorage['update'] = false;
           $.get(location.href, function(){window.open(location.href)}, 'html');
    
           window.opener = window;
           window.close(); 
         }
    }, 5000);
    

    所以这将基本上每 5 秒检查一次是否需要更新,如果是,则将更新设置回 false 或者它将继续刷新页面,然后它会打开一个新页面并自行关闭,这将迫使浏览器聚焦在新标签上。

    这并不完全是您想要实现的目标,但它已经与您使用 js 可以实现的目标一样接近。

    如果您不想刷新而不是 $.get(... 您可以发出警报,以便选项卡的标题变为粗体,以便用户知道那里发生了一些事情。

    我没有对此进行测试,但你明白了。

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 2019-08-23
      • 2012-01-10
      • 2011-02-18
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 2021-08-06
      相关资源
      最近更新 更多