Как изменить фокус браузера с одной вкладки на другую - PullRequest
17 голосов
/ 24 апреля 2010

У меня есть клиент чата JavaScript, работающий на одной вкладке браузера (назовите его вкладкой A). Теперь, когда приходит сообщение, пользователь может оказаться на другой вкладке браузера (назовите его вкладкой B). Я ищу способы изменить фокус со вкладки B на мой клиент чата (вкладка A) при получении такого сообщения.

Я не мог найти способ сделать это.

Ответы [ 6 ]

15 голосов
/ 24 апреля 2010

Это не возможно - из-за соображений безопасности.

если под «вкладкой», вы подразумеваете окно и всплывающее окно, которое (из-за настроек браузера) открылось в новой вкладке. Если это так, то да, вы можете.

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

//focus popup... from opener
yourPopupName.focus(); 
7 голосов
/ 13 января 2012

Возможно сместить фокус обратно на вкладку A с помощью предупреждения на вкладке A, например, оповещение («Новое сообщение»)

Однако вы должны быть осторожны при использовании этого, поскольку это очень вероятно, чтобы раздражать людей. Вы должны использовать его только в том случае, если вы делаете его необязательным в своем приложении. В противном случае обновление заголовка и / или значка вкладки A будет выглядеть лучше, как говорит nc3b.

5 голосов
/ 24 апреля 2010

Лучшее, что вы могли бы, вероятно, было бы изменить заголовок страницы, предупреждая пользователя, что вкладка нуждается во внимании (возможно, также favicon - посмотрите, как это делает meebo, это действительно раздражает, но эффективно)

4 голосов
/ 09 марта 2016

это сработало для меня при отправке формы для повторного открытия целевого окна. поэтому он вызовет 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>
3 голосов
/ 06 января 2015

Используя Javascript, запуск оповещения может дать желаемый эффект. Запустите этот код в консоли или добавьте его в html-файл на одной вкладке и переключитесь на другую вкладку в том же браузере.

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

Предупреждение, появляющееся после тайм-аута, активирует переключение вкладок. Или вы можете сделать что-то подобное! Однако по причинам UX вы все еще можете использовать пинг или добавление и индикатор, как в счетчике сообщений Facebook в заголовке страницы ((1) Facebook). Вы также можете поэкспериментировать с API уведомлений (экспериментально).

2 голосов
/ 22 марта 2016

Chrome и Firefox теперь имеют уведомления.Я думаю, что уведомления, вероятно, являются более удобным для пользователя способом оповещения пользователя о том, что что-то изменилось в вашем приложении, чем отправка оповещения и принуждение его к вашей странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...