2010-10-22 24 views
16

Al principio pensé que el hash hack es un requisito, sin embargo, a juzgar por las actualizaciones recientes de Facebook, estoy pensando lo contrario.¿Cómo podría cambiar la ubicación de la ventana sin volver a cargarla y # hackear?

El hash hash original (no estoy seguro de si este es el término correcto) es que al cambiar location.hash, uno puede guardar un estado en la URL sin actualizar la página. Eso es ampliamente utilizado por las aplicaciones de Google y Facebook, y últimamente #NewTwitter. Sin embargo, hoy noté que Facebook ya no tiene este "#" si usa un navegador "moderno", como Chrome o Firefox. Comprobé dos veces que no se están recargando usando herramientas de desarrollador y Firebug respectivamente.

Con una búsqueda mínima en stackoverflow, la más cercana a la solución es usar Flash; sin embargo, deshabilité Flash y Facebook.com todavía funciona como un amuleto. A juzgar por la cobertura en chrome 8 dev y firefox 4 beta, me pregunto si podría estar relacionado con las API de la era HTML5, pero el código en Facebook no es de mi capacidad de depuración para descubrir lo que hicieron.

Como esta es la primera pregunta que hago aquí, me pregunto si alguno de ustedes ya ha resuelto este problema.

Gracias chicos.

P.S. No funciona en IE8, no ha probado en IE9 beta.

+0

¿Qué "No funciona en IE8"? :) Esto está cubierto por las pautas de rastreo de AJAX de Google. Tienen un escaparate en http://gwt.google.com/samples/Showcase/Showcase.html que puede ser útil aquí. – bzlm

+1

No sé si esta es la respuesta, pero hay [almacenamiento de datos del lado del cliente] (http://dev.w3.org/html5/webstorage/) en HTML5. Quizás eso sea utilizado. En Safari (y supongo que Chrome) hay una sección de "Almacenamiento" de las herramientas de desarrollador. Quizás eso dará algunas pistas. – user113716

+0

@bzlm tenga en cuenta el # en la url. – itsnotvalid

Respuesta

20

Facebook está utilizando la API de historial en HTML5. Desde this blog post puedes ver cómo funciona esto. Básicamente están haciendo llamadas como la siguiente para cambiar la URL sin tener que volver a cargar la página.

window.history.pushState("object or string", "Title", "/new-url"); 

Aquí es el proyecto de especificación HTML5 trabajando en ello: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-location-interface

Lamentablemente, IE9 no es compatible con esta API. Las nuevas versiones de Chrome y FF tienen soporte completo.

+0

Gracias por responder y creo que necesito profundizar en las especificaciones de desarrollo. -> http://dev.w3.org/html5/spec/history.html – itsnotvalid

+2

Acabo de encontrar este plugin jquery que tal vez quiera consultar. Parece bastante bueno para manejar esto, además se degrada para manejar navegadores que no son compatibles con HTML5. http://www.asual.com/jquery/address/ –

+1

¿Qué hay de ie9. Cómo hacerlo en ie9 –

Cuestiones relacionadas