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