我在一个浏览器选项卡(称为选项卡 A)中运行了一个 JavaScript 聊天客户端。现在,当消息到达时,用户可能在另一个浏览器选项卡上(称为选项卡 B)。当这样的消息到达时,我正在寻找将焦点从选项卡 B 更改为我的聊天客户端(选项卡 A)的方法。
我找不到办法做到这一点。
我在一个浏览器选项卡(称为选项卡 A)中运行了一个 JavaScript 聊天客户端。现在,当消息到达时,用户可能在另一个浏览器选项卡上(称为选项卡 B)。当这样的消息到达时,我正在寻找将焦点从选项卡 B 更改为我的聊天客户端(选项卡 A)的方法。
我找不到办法做到这一点。
这是不是可能-出于安全考虑。
除非“选项卡”是指在新选项卡中打开的窗口和弹出窗口(由于浏览器首选项)。如果是这种情况,那么是的,您可以。
//focus opener... from popup
window.opener.focus();
//focus popup... from opener
yourPopupName.focus();
可以通过 Tab A 中的警报将焦点移回 Tab A,例如 alert('New Message')
但是,您需要小心使用它,因为它很可能会惹恼人们。只有在您的应用程序中将其设为可选时,才应使用它。否则,如 nc3b 所说,更新选项卡 A 的标题和/或网站图标似乎是最好的。
最好的方法可能是更改页面标题,提醒用户该选项卡需要注意(也许还有 favicon - 看看 meebo 是如何做到的,这真的很烦人但很有效)
Chrome 和 firefox 现在有通知。我认为通知可能是一种更用户友好的方式来提醒用户您的应用程序发生了某些变化,而不是弹出警报并强制他们进入您的页面。
这在表单提交上对我有用以重新打开目标窗口..所以它会在同一个目标上调用 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>