2010-04-24 67 views
14

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

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

+0

此时,使用ServiceWorker API可以实现从标签页到标签页的焦点更改。这将是一个黑客,但。 – 2017-05-11 23:12:55

回答

15

它是不是可能 - 由于安全问题。

除非通过“选项卡”,您的意思是一个窗口和一个弹出窗口(由于浏览器首选项)在新选项卡中打开。如果是这样,那么你可以。

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

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

window.opener.focus()不适用于我当标签页http://stackoverflow.com/questions/17237542/how-to-set-focus-to-child-and-opener-windows-when-tabbed – magritte 2013-06-21 14:44:39

+0

焦点函数是仅jQuery的权利? – DerpyNerd 2016-12-07 07:59:10

+0

@RobbieVercammen no这里调用的focus()方法是窗口对象的方法。 (类似本地重点()表单域) – scunliffe 2016-12-07 10:50:24

5

最好的,你可以很可能会改变警告标签需要注意用户页面的标题(也许还有图标 - 看Meebo的是怎么做的,这真是烦人,但有效)

+0

Twitter做了类似的事情,它增加了一个计数,如果有新消息要阅读,所以我同意这可能是最好的方法去。 – 2010-04-24 15:36:14

7

可以通过Tab A中的提示将焦点移回标签A,例如alert('New Message')

但是,你需要小心使用它,因为它很可能会惹恼人。如果您在应用中将其设置为可选,则应该只使用它。否则,更新标签A的标题和/或图标看起来像nc3b所说的最好。

+0

使用'alert'使得该页面中的所有j都停止。不是一个好理想 – ntlam 2017-08-15 08:08:00

3

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

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

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

+1

值得注意的是,警报应该在窗口内被触发。开瓶器“,而不是实际的”窗口“。 – 2015-06-08 18:36:37

3

这个工作表单提交我重新打开目标窗口.. 所以它会调用window.open对同一目标(或新的如果改变),然后继续提交表单。

 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>

2

Chrome和Firefox现在有通知。我认为通知可能是一种更加用户友好的方式,可以提醒用户应用程序发生了某些变化,而不是弹出警告并强制它们进入您的页面。

相关问题