繁体   English   中英

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

[英]How to change browser focus from one tab to another

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

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

这是不可能的-出于安全考虑。

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

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

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

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

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

你最好的可能是改变页面的标题,提醒用户选项卡需要注意(也许还有favicon - 看看meebo是怎么做的,它真的很讨厌但很有效)

这对我来说在表单提交时重新打开目标窗口..所以它会在同一个目标上调用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> 

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM