Изменение названия окна при фокусировке окна в Chrome не работает
Я (ab), используя заголовок документа как своего рода область уведомлений. Если на вкладке/окне нет фокуса в момент, когда я хочу уведомить пользователя о чем-то, я изменяю заголовок окна, чтобы включить какое-то уведомление.
Когда окно/вкладка возвращается в фокус, я хочу удалить уведомление, т.е. reset название в стандарт. Однако этот сброс иногда не работает в Chrome.
Когда я выхожу из другого окна, заголовок обновляется правильно, но когда я перехожу из другой вкладки в том же окне, это не так.
Я нашел обходное решение для этого (я отправлю его как ответ), но, пожалуйста, поделитесь любыми другими идеями, которые, возможно, вам придется исправить.
Ответы
Ответ 1
Это, как представляется, является ошибкой в Chrome относительно фактической перерисовки заголовка вкладки, поскольку сам заголовок документа (т.е. внутри DOM) на самом деле правильно обновлен.
Я полагаю, что изменение вкладки (что заставляет табуляцию перемещаться на передний план, поэтому ее нужно перерисовать) и изменение названия в результирующем событии фокуса (что также требует перерисовки) вызывает какое-то состояние гонки.
Вот почему я пробовал это обходное решение, которое действительно работает:
window.setTimeout(function () { $(document).attr("title", newtitle); }, 200);
– просто подождите короткое время, прежде чем обновлять заголовок, поэтому два события перерисовывания не конфликтуют друг с другом. Это не очень, очевидно, но 0,2-секундная задержка обычно не является проблемой.
Ответ 2
хотя tiftik сказал, что эта ошибка исправлена, она все еще случается в моем Chrome (версия 21).
Предлагаемое решение balpha также работает для меня - но не забудьте указать название документа на новый заголовок на Focus и подождите 200 мс, чтобы снова установить его - это не сработает! (возможно, потому, что Chrome считает, что это тот же заголовок, поэтому он не будет обновляться)
Подождите 200 мс и установите его - отлично работает!
Ответ 3
Для справок в будущем: эта ошибка исправлена.