2010-06-01 5 views
11

Je (ab) utilise le titre du document comme une sorte de zone de notification. Si l'onglet/la fenêtre en question n'a pas de focus au moment où je souhaite informer l'utilisateur de quelque chose, je change le titre de la fenêtre pour inclure une notification.Modifier le titre de la fenêtre lorsque la mise au point de la fenêtre ne fonctionne pas dans Chrome

Lorsque la fenêtre/l'onglet redevient actif, je souhaite supprimer la notification, c'est-à-dire réinitialiser le titre à la norme. Cette réinitialisation, cependant, ne fonctionne parfois pas dans Chrome.

Quand je viens d'une autre fenêtre , le titre est mis à jour correctement, mais quand je viens d'un onglet différents dans la même fenêtre, il ne fonctionne pas.

J'ai trouvé une solution de contournement pour cela (je l'afficherai comme une réponse), mais s'il vous plaît partager d'autres idées que vous pourriez avoir pour résoudre ce problème.

Répondre

14

Cela semble être un problème dans Chrome en ce qui concerne la redéfinition réelle du titre de l'onglet, puisque le titre du document lui-même (c'est-à-dire dans le DOM) est en fait correctement mis à jour. Je suppose que changer l'onglet (qui déplace l'onglet vers l'avant-plan, donc à redessiner) et changer le titre dans l'événement de focus résultant (qui nécessite également un redessin) provoque une condition de course.

C'est la raison pour laquelle j'ai essayé cette solution de contournement, qui ne fonctionne en fait:

window.setTimeout(function() { $(document).attr("title", newtitle); }, 200); 

– juste attendre un peu de temps avant la mise à jour du titre, donc les deux redessiner les événements ne sont pas en conflit les uns avec les autres. Ce n'est pas joli, évidemment, mais un délai de 0,2 seconde ne devrait normalement pas poser de problème.

+0

auto-acceptant cette réponse; mais n'hésitez pas à poster de meilleurs correctifs/solutions de contournement; Je peux toujours changer la réponse acceptée – balpha

+2

'$ (document) .attr ('title', newtitle)'? 'document.title = newtitle' est plus simple. – nyuszika7h

+0

@ Nyuszika7H: Je pense que j'utilise 'document.title = newtitle' (je pense en fait avoir essayé les deux, pour exclure la possibilité d'un problème jQuery). De toute façon, qui s'en soucie? Les deux fonctionnent, les deux sont clairs, les deux font la même chose. – balpha

0

Pour référence future: ce bogue est actuellement corrigé.

+1

Intéressant; avez-vous une référence? – balpha

+1

Chrome 28: ce n'est pas le cas. – poitroae

+1

Chrome 29.0.1547.57 m - Non corrigé – nakib

1

Bien que tiftik a dit que ce bogue est corrigé, il s'est quand même passé sur mon Chrome (Version 21).

La solution balpha proposée fonctionne pour moi aussi - mais attention à ne pas définir le titre du document sur le nouveau titre sur Focus et attendre 200ms pour le re-configurer - Cela ne marchera pas! (probablement parce que Chrome pense que c'est le même titre, donc il ne sera pas mis à jour)

Juste attendre 200ms et le régler - fonctionne très bien!

Questions connexes