Как изменить фокус браузера с одной вкладки на другую
У меня есть клиент чата JavaScript, работающий на одной вкладке браузера (назовите его вкладкой A). Теперь, когда приходит сообщение, пользователь может находиться на другой вкладке браузера (назовите его вкладкой B). Я ищу способы изменить фокус с вкладки B на мой клиент чата (вкладка A), когда приходит такое сообщение.
Я не мог найти способ сделать это.
Ответы
Ответ 1
не - из-за проблем с безопасностью.
если только "вкладка" означает окно и всплывающее окно, которое (из-за настроек браузера) открылось на новой вкладке. Если это так, то да, вы можете.
//focus opener... from popup
window.opener.focus();
//focus popup... from opener
yourPopupName.focus();
Ответ 2
Можно переключить фокус обратно в Tab A с помощью предупреждения в Tab A, например. alert ( "Новое сообщение" )
Однако вам нужно быть осторожным, используя это, так как это очень сильно раздражает людей. Его следует использовать, только если вы сделаете его необязательным в своем приложении. В противном случае обновление заголовка Tab A и/или значка будет лучшим, как говорит nc3b.
Ответ 3
Лучшее, что вы могли бы, вероятно, изменить название страницы, предупреждающее пользователя, что вкладка требует внимания (возможно, также значок - посмотрите, как это делает meebo, это действительно раздражает, но эффективно)
Ответ 4
Использование Javascript, срабатывание предупреждения может иметь желаемый эффект. Запустите этот код в консоли или добавьте в свой html файл на одной вкладке и переключитесь на другую вкладку в том же браузере.
setTimeout(function(){
alert("Switched tabs");
},
5000);
Появится предупреждение, появившееся после таймаута, вызывая переключение табуляции. Или вы можете сделать что-то подобное! Однако по причинам UX вы все равно можете использовать пинг или добавление и индикатор, как в счетчике сообщений Facebook, в заголовке страницы ((1) Facebook). Вы также можете поэкспериментировать с API уведомлений (экспериментальный).
Ответ 5
это сработало для меня на форме submit, чтобы открыть окно цели.
поэтому он будет вызывать 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>
Ответ 6
У Chrome и firefox теперь есть уведомления. Я думаю, что уведомления, вероятно, более удобны для пользователя, чтобы предупредить пользователя о том, что что-то изменилось в вашем приложении, а не появлялось предупреждение и принуждало их к вашей странице.