Как изменить фокус браузера с одной вкладки на другую

У меня есть клиент чата 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 теперь есть уведомления. Я думаю, что уведомления, вероятно, более удобны для пользователя, чтобы предупредить пользователя о том, что что-то изменилось в вашем приложении, а не появлялось предупреждение и принуждало их к вашей странице.