2010-11-17 7 views
5

Estoy tratando de implementar una navegación decente en una aplicación AJAX. Lo que estoy haciendo ahora es lo siguiente:Manera inteligente de administrar el historial del navegador

  • Cada vez que un usuario hace clic en un enlace AJAX, se realiza la llamada correspondiente y se cambia el hash.
  • Cada vez que se carga una página nueva, compruebo si el hash está presente y realizo la llamada AJAX correspondiente para actualizar la página. Esto asegura que los marcadores funcionarán como se esperaba.
  • Cada 500ms verifico si se cambia el hash y realizo la llamada AJAX correspondiente. Esto cuida a los usuarios presionando los botones retroceder/avanzar, aunque con una demora leve.

El tercer punto es un poco molesto: prefiero no tener un tiempo de espera cada 500ms solo para verificar el hash, ya que la mayoría de las veces seguirá siendo el mismo.

¿Hay una mejor manera de gestionar esto? No puedo pensar en ninguna alternativa, pero tal vez me falta algo.

Por favor, no me dirija hacia las soluciones prefabricadas, a menos que sepa que se basan en un mecanismo diferente.

Respuesta

5

Existe el evento "hashchange", que se implementará en HTML5. No estoy seguro de qué tan bueno es el soporte ahora ... IE8 lo soporta, y creo que Mozilla tiene su propia implementación en un lanzamiento reciente. Aparte de eso, no hay nada que temer. Comprobando exery x ms es la forma en que todos lo hacen.

+1

IE8, Firefox 3.6, Chrome 4 y los navegadores más nuevos admiten el evento hashchange. Biblioteca de cierres de Google (http://closure-library.googlecode.com/svn-history/r8/trunk/closure/goog/docs/class_goog_History.html) y YUI 3 (http://developer.yahoo.com/yui/ 3/history /) usará este evento si es posible, de lo contrario recurrirá a los esquemas de votación. – ide

0

tal vez this es una lectura interesante, es una solución preparada para lo que está haciendo exactamente. y no, hasta que el hashchange se apoya correctamente en todos los navegadores (es decir: es decir), que tendrá que comprobar manualmente

0

uso de este plugin: http://www.asual.com/jquery/address/

El plugin jQuery direcciones proporciona potentes capacidades de enlace profundo y permite que el creación de direcciones virtuales únicas que pueden apuntar a una sección de sitio web o un estado de aplicación. Permite a una serie de capacidades importantes, incluyendo:

  • marcadores en un navegador o sitio web sociales
  • envío de enlaces a través de correo electrónico o de mensajería instantánea
  • la búsqueda de contenido específico utilizando los principales motores de búsqueda
  • Utilizando el historial del navegador y botones de recarga
+0

He declarado claramente "Por favor, no me dirijan a las soluciones ya preparadas, a menos que sepa que se basan en un mecanismo diferente". – Andrea

+2

Lo siento, el italiano es mi primer idioma. Por lo que entiendo, parece que estás buscando diferentes mecanismos. Creo que debería ser "Por favor, no me dirijan a las soluciones ya preparadas, a menos que sepa que NO se basan en un mecanismo diferente". De hecho, creo que pasé por alto esta frase. –

+0

Allí, voté por ti para compensar su comportamiento grosero. :) –

Cuestiones relacionadas