2010-03-01 5 views
23

He estado buscando en las bibliotecas de JQuery el hash URL, pero no encontré ninguno que fuera bueno. Existe el "plugin de historial", pero todos sabemos que tiene errores y no es flexible.¿Cuál es la mejor biblioteca para hacer un hash/historial de URL en JQuery?

Estoy cargando mis páginas dentro de un div. Necesitaré una forma de hacer back/forward junto con el hash de la url.

mydomain.com/#home 
mydomain.com/#aboutus 
mydomain.com/#register 

¿Cuál es la mejor biblioteca que puede manejar todo esto?

Respuesta

25

Recientemente miré 3 plugins diferentes - jquery history plugin, history y jQuery BBQ.

Todos fueron bastante difíciles de instalar, logré que jQuery.history funcionara pero todavía tenía problemas con IE7. Así que cambié a BBQ y funcionó bien en todos nuestros navegadores de destino (IE6, IE7, IE8, Fx3).

Así que recomiendo el plugin jQuery BBQ.

Edit: here's a blog post Acabo de escribir que demuestra jQuery BBQ con menús desplegables en cascada.

-4

yo sepa, todos los plugins de historia hacen lo mismo:

setInterval(function() { 
    if(theHashChanged) { 
     someFunction(oldHash,newHash); 
    } 
}, 500/*whatever*/); 

Eso es bastante el núcleo de la misma (navegador menos hacks para añadir entradas del historial sin hacer clic en un enlace, etc.). Siempre va a tener errores porque es un truco y no hay una API cruzada para el manejo de cambios en el historial.

Además de todo eso, la experiencia del usuario para este tipo de cosas no es muy buena. Los usuarios no entienden cuándo tienen que hacer clic en el botón Atrás 4 veces para salir de la página.

+1

-1: Nada útil. ¿Y desde cuándo los usuarios esperan que el botón de retroceso los saque de la página? ¿Solo navegas en sitios de flash? – nikow

+1

@nikow se basa en mi experiencia con un gran sitio público. Solo porque pueda implementar algo como esto, no significa que deba hacerlo. Honestamente, no puedo pensar en un solo sitio donde esta característica sea más útil que molesta. – noah

+1

@nikow - "¿Desde cuándo los usuarios esperan que el botón de retroceso los saque de la página?" Dado que la web y los navegadores web se introdujeron por primera vez, diría;). La función normal del botón de retroceso es, por supuesto, pasar de la página actual a la página anterior. –

0

He tenido buena suerte con reallysimplehistory (nee dhtmlHistory). No es jQuery específico, pero funciona en IE, firefox y webkit, y no requiere mucha configuración.

0

Quizás intente este plugin de jQuery History: http://www.balupton.com/sandbox/jquery-history/demo/ Proporciona compatibilidad con navegadores cruzados, enlaces a hashes, hash de sobrecarga, todo lo demás.

También hay una extensión de Ajax para él, lo que le permite actualizar fácilmente su página web en una aplicación adecuada Ajax: http://www.balupton.com/sandbox/jquery-ajaxy/demo/

Ésta es la solución elegida por aquellos lugares que http://wbhomes.com.au/ y http://gatesonline.com.au/stage/public/

En general, es bien documentado, compatible y con muchas funciones. También se ganó una pregunta de generosidad aquí How to show Ajax requests in URL?

1

¿Has probado la dirección jQuery? De Asual, los chicos que hicieron SWFAdress. Asual - jquery Address

El complemento de dirección jQuery proporciona potentes capacidades de enlace profundo y permite la creación de direcciones virtuales únicas que pueden apuntar a una sección de sitio web o un estado de aplicación.

+0

Intenté este complemento y tuve problemas con el momento en que se registró el evento de cambio. – Chev

1

History.js está bien documentado y es compatible con todos los navegadores.

https://github.com/browserstate/history.js

Desde el sitio:

History.js apoya con gracia la historia de HTML5/Estado API (pushState, replaceState, onPopState) en todos los navegadores. Incluyendo soporte continuo para datos, títulos, replaceState. Admite jQuery, MooTools y Prototype. Para los navegadores HTML5, esto significa que puede modificar la URL directamente, sin la necesidad de utilizar hashes. Para navegadores HTML4, volverá a utilizar la funcionalidad anterior onhashchange .

Cuestiones relacionadas