Pregunta

Gmail usa # cuando haces clic en un correo para distinguir la página (acción + Ajax). http://mail.google.com/mail/#inbox/1238e709e37a1394

He encontrado: ¿Google usa # en lugar de buscar? en la URL. ¿Por qué?

En FF o Chrome, puedes usar Adelante y Atrás sin actualizar entre esas URL: http://X.com/MyPage.aspx#1 http://X.com/MyPage.aspx#2 http://X.com/MyPage.aspx#3

Pero en IE la página se actualiza y no cuenta los parámetros después de # cuando se realiza una acción inversa.

¿Cómo Gmail hace que ocurra la magia?

¿Fue útil?

Solución 2

Esto es lo que estaba buscando: http://nix.lv/history/demo.html#3

Lo encontré en: Guarde el ancla en la historia ie6

Otros consejos

Puedo darte la respuesta a esto, porque he enfrentado y resuelto este problema.

Primero hay que entender algunos conceptos:

  1. javascript no puede alterar el historial del navegador directamente.
  2. cada vez que cambia la URL base de un iframe en la página, el historial se actualiza. (pero esto tiene algunas peculiaridades con diferentes navegadores).
  3. la url tiene un " hash " parte: por ejemplo, en la URL http://mail.google.com/mail#inbox , #inbox es la parte con hash. Llamémoslo el " hash " ;. por lo tanto, http://mail.google.com/mail será nuestra " URL base " ;.

El historial de seguimiento de GMail se realiza principalmente mediante trucos basados ??en este " hash " ;.

Por lo tanto, algunos conceptos más:

  1. cuando la URL en la barra de direcciones cambia, el historial se actualiza (la URL anterior entra en el historial)
  2. cuando se cambia la URL base, la página se vuelve a cargar.
  3. cuando la parte de hash de la URL cambia sin cambiar la URL base, la página no se vuelve a cargar.

Entonces, cuando pasas de http://mail.google.com/mail#inbox a http://mail.google.com/mail#sent , la página no se actualiza .

Ahora, si GMail obtuviera una notificación de evento cuando se modificara el hash, gmail podría tomar medidas basadas en eso. Desafortunadamente, no hay eventos DOM que puedan ayudarnos a capturar acciones del historial. Entonces, en cambio (esta es la parte que muestra cómo superé el problema), ejecutamos un bucle infinito que verifica los cambios en el hash. Si observa un cambio, entonces detectamos un clic en el botón " atrás " o " adelante " botón del navegador.

Al resolver esto, hice una herramienta útil: el analizador de URL . Puede analizar los parámetros GET en la URL, así como los parámetros codificados en el hash. ¡Dale una oportunidad a la demostración!

¡Salud!


Sobre este problema en IE: no me di cuenta de que esta solución basada en 'hash' no funciona en IE (desarrollador de Linux antiguo y pobre)

Pero para IE, puedes usar un iframe oculto, y usar su " url afecta el historial " Propiedad para implementar la historia. Sé que esta declaración carece de detalles, pero eso se debe a mi propia falta de experiencia con IE.

Intentaré esta solución y haré un seguimiento :)

Encontré una gran cantidad de enlaces en Internet, que hacen implementaciones adecuadas de la historia utilizando iframes / ubicación hash. No tuve la paciencia para descubrir las diferencias entre la interfaz de iframe en varios navegadores.

Supongo que preferiría el complemento jquery . YUI también tiene un administrador de historia.

¡Salud!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top