如何将浏览器焦点从一个标签更改为另一个标签

时间:2010-04-24 11:09:52

标签: javascript focus

我在一个浏览器标签中运行了一个JavaScript聊天客户端(称之为标签A)。现在,当消息到达时,用户可能在另一个浏览器选项卡上(称为选项卡B)。当这样的消息到来时,我正在寻找将焦点从标签B更改为聊天客户端(标签A)的方法。

我找不到办法做到这一点。

7 个答案:

答案 0 :(得分:15)

由于安全问题, 可能。

除非按“tab”表示一个窗口和一个弹出窗口(由于浏览器首选项)在新选项卡中打开。如果是这种情况,那么你可以。

//focus opener... from popup
window.opener.focus();

//focus popup... from opener
yourPopupName.focus(); 

答案 1 :(得分:7)

可以通过标签A中的警告将焦点移回标签A,例如警报('新消息')

但是,你需要小心使用它,因为它很可能会惹恼人们。只有在应用程序中将其设为可选项时,才应使用它。否则,更新标签A的标题和/或图标似乎是最好的,因为nc3b说。

答案 2 :(得分:5)

最好你可能会更改页面的标题,提醒用户标签需要注意(也许还有图标 - 看看meebo是怎么做的,它真的很烦人但很有效)

答案 3 :(得分:4)

这对我来说在表单提交时重新打开目标窗口.. 所以它会在同一个目标上调用window.open(如果更改则调用new),然后继续提交表单。

        var open_target = function (form){
            var windowName = jQuery(form).attr('target');
            window.open("", windowName );
            return true;
        };
    <form target="_search_elastic" onsubmit="return open_target(this);">
      </form>

答案 4 :(得分:3)

使用Javascript,触发警报可以产生预期效果。在您的控制台中运行此代码,或在一个选项卡中添加到您的html文件,然后切换到同一浏览器中的另一个选项卡。

setTimeout(function(){ 
    alert("Switched tabs");
}, 
5000);

超时后出现的警报将触发标签切换。或者你可以做类似的事情!但是,出于UX原因,您仍然可以在页面标题((1)Facebook)中使用Facebook的消息计数器中的ping或添加和指示符。您还可以尝试使用Notifications API(实验性)。

答案 5 :(得分:2)

Chrome和Firefox现在有通知。我认为通知可能是一种更加用户友好的方式,可以提醒用户您的应用上发生了更改,而不是弹出警报并强制他们访问您的网页。

答案 6 :(得分:0)

一些常规的基于chrome的浏览器可能会被chrome调试器协议控制,如果浏览器打开带有标志--remote-debugging-port=***,我使用github上的工具cyrus-and/chrome-remote-interface并调用CDP.Activate([options],callback)方法进行切换浏览器选项卡。它适用于 New MS Edge,也适用于 chrome。但遗憾的是,这在 vivaldi 浏览器中不起作用,这是我想使用的功能最丰富的浏览器。