2010-06-01 18 views
11

Estoy (ab) utilizando el título del documento como un tipo de área de notificación. Si la pestaña/ventana en cuestión no tiene foco en el momento en que deseo notificar al usuario algo, cambio el título de la ventana para incluir alguna notificación.Cambiar el título de la ventana cuando el enfoque de la ventana no funciona en Chrome

Cuando la ventana/pestaña vuelva a estar enfocada, deseo eliminar la notificación, es decir, restablecer el título a la norma. Sin embargo, este restablecimiento a veces no funciona en Chrome.

Cuando vengo de una ventanadiferente, el título se actualiza correctamente, pero cuando vengo de una pestaña diferente dentro de la misma ventana, no lo hace.

He encontrado una solución para esto (la publicaré como respuesta), pero comparta cualquier otra idea que tenga para solucionar este problema.

Respuesta

14

Esto parece ser un error en Chrome con respecto al redibujado real del título de la pestaña, ya que el título del documento en sí (es decir, dentro del DOM) se actualiza correctamente.

Supongo que cambiar la pestaña (que hace que la pestaña se mueva al primer plano, por lo tanto para volver a dibujar) y cambiar el título dentro del evento de enfoque resultante (que también requiere un redibujado) causa algún tipo de condición de carrera.

Es por eso que he intentado esta solución, que de hecho funciona:

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

– sólo tiene que esperar por un corto tiempo antes de actualizar el título, así que los dos eventos redibujado no entren en conflicto entre sí. Eso no es bonito, obviamente, pero una demora de 0.2 segundos generalmente no debería ser un problema.

+0

autoaceptando esta respuesta; pero no dude en publicar mejores soluciones/soluciones; Todavía puedo cambiar la respuesta aceptada – balpha

+2

'$ (document) .attr ('title', newtitle)'? 'document.title = newtitle' es más simple. – nyuszika7h

+0

@ Nyuszika7H: Creo que realmente uso 'document.title = newtitle' (en realidad creo que probé ambas cosas, para descartar la posibilidad de un problema de jQuery). De cualquier manera, ¿a quién le importa? Ambos funcionan, ambos son claros, ambos hacen lo mismo. – balpha

0

Para referencia futura: este error está actualmente resuelto.

+1

Interesante; ¿Tiene una referencia? – balpha

+1

Chrome 28: no lo es. – poitroae

+1

Cromo 29.0.1547.57 m - No se ha corregido – nakib

1

aunque tiftik dijo que este error está solucionado, todavía sucedió en mi Chrome (Versión 21).

La solución balpha ofrecida también funciona para mí, pero tenga en cuenta que no debe establecer el título del documento en el nuevo título en Focus y esperar 200ms para volver a establecerlo - ¡Esto no funcionará! (probablemente porque Chrome piensa que es el mismo título, por lo que no se actualizará)

Solo espere 200ms y configúrelo - ¡funciona bien!

Cuestiones relacionadas