Foros del Web » Programando para Internet » Javascript »

history.js | Browser history

Estas en el tema de history.js | Browser history en el foro de Javascript en Foros del Web. Hola, estoy trabajando con un sitio que carga todas sus secciones en AJAX. Ahora lo hace usando hastag pero quiero actualizarla para que trabaje con ...
  #1 (permalink)  
Antiguo 20/02/2012, 18:31
 
Fecha de Ingreso: octubre-2006
Mensajes: 199
Antigüedad: 17 años, 6 meses
Puntos: 3
history.js | Browser history

Hola,

estoy trabajando con un sitio que carga todas sus secciones en AJAX. Ahora lo hace usando hastag pero quiero actualizarla para que trabaje con los nuevos métodos que incluye HTML5 para esta tarea.

He encontrado un método con javascript para que cualquier navegador, aunque no soporte HTML5, pueda utilizarlos. Seguro que alguno de vosotros ya conoce este proyecto llamado history.js - https://github.com/balupton/history.js

El caso es que no me aclaro del todo a la hora de utilizarlo y quería saber si alguien podría poner algún ejemplo sencillo sobre su uso. Este es uno de los ejemplos que propone su autor, pero me pierdo un poco con ello, sinceramente.

Espero que me podáis ayudar! Además creo que se trata de un recurso muy interesante que me gustaría compartir con vosotros.

Muchas gracias!

:)
  #2 (permalink)  
Antiguo 10/03/2012, 13:34
 
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: history.js | Browser history

Hola, yo estoy desarollando una aplicación web y estoy empezando a implementar esta herramienta, en cuanto tenga las cosas más claras pondré por aquí un mini-tutorial de cómo funciona.
  #3 (permalink)  
Antiguo 14/03/2012, 11:58
 
Fecha de Ingreso: octubre-2006
Mensajes: 199
Antigüedad: 17 años, 6 meses
Puntos: 3
Respuesta: history.js | Browser history

Eso sería fantástico, Charlii. Yo por ahora no he conseguido hacerla funcionar bien. Espero verlo pronto!
  #4 (permalink)  
Antiguo 14/03/2012, 12:30
 
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: history.js | Browser history

https://github.com/balupton/History.js

History.js nos proporciona 4 métodos (a mi modo de ver) principales que son:

History.pushState(data,title,url)
History.replaceState(data,title,url)
History.getState()
History.go(X)

Hay otros dos que son atajos de History.go(), éstos son History.back() (equivale a History.go(-1)) y History.forward() (equivale a History.go(1)). Tiene otros métodos, los pueden ver en el link al inicio de este mensaje, a destacar History.Adapter.bind(element,event,callback).

Lo que se tiene que pensar primeramente es en cómo funciona el historial del navegador, pensemos en éste como si fuera un array, y que la primera página cargada está en el índice 0, si el usuario avanza a una nueva página decimos que navegó al índice 1, si avanza nuevamente navegó al índice 2, etc. Si estando en el índice 4 y regresa una posición en el historial, está navegando al índice 3, y si de ahí retrocede tres posiciones estaría navegando al índice 0, estando aquí no puede ir más atrás.

Con los métodos que nos proporciona History.js podemos manejar a nuestra necesidad estos cambios en el navegador sin recargar la página.

Sin embargo la funcionalidad para que en nuestra página se vean los cambios que deseamos la debemos implementar nosotros. Es decir, al cargar X contenido con Ajax podemos usar History.pushState() para agregar un nuevo "estado" (una nueva página cargada) al historial, y nosotros haremos la funcionalidad para hacer los cambios que correspondan en nuestra página (cargar X contenido).

Manejar correctamente el historial es más complejo de lo que parece inicialmente. En mi aplicación hago uso de ColorBox (http://jacklmoore.com/colorbox/) para mostrar ciertos contenidos. Muy parecido al visualizador de fotos actual de Facebook.

Implementé mi propia funcionalidad para navegar entre elementos (anterior, siguiente), y quiero que al cambiar de elemento se actualice la URL con History.js y que también se maneje totalmente el historial.

Lo que pretendo es que por ejemplo, si se avanza al elemento "siguiente", se debe actualizar la URL y si el usuario usa la función del navegador para regresar a la página anterior, se debería cargar el elemento previamente cargado, y si el usuario vuelve a usar mis controles para ir al elemento siguiente se debería "simular" que el usuario usó la función de su navegador para ir a la siguiente página (es decir, no agregar una nueva página al historial, sino avanzar a la siguiente).

Por el momento sólo estoy usando History.replaceState() para cambiar la URL de la página actual al cargar un elemento, sin embargo no estoy manejando el historial porque no he tenido tiempo suficiente para resolver este problema, y esto depende de cada aplicación.

Algo que recomendaría a los que tengan una aplicación similar a la mía sería que vieran el visualizador de fotos de Facebook, desplieguen el panel de Historial (estoy en Firefox, ctrl + H) y naveguen entre las fotos, así como cerrar el visualizador y presionar el botón Atrás, probar diferentes combinaciones. La forma en que lo hacen ellos es exactamente lo que yo quiero hacer.

Saludos.

Etiquetas: ajax, history, history.js, browsers
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:23.