Comment puis-je détecter une barre d'adresse changement avec le JavaScript?
J'ai un Ajax lourds application qui peut avoir une URL telle que
http://example.com/myApp/#page=1
Lorsqu'un utilisateur manipule le site, la barre d'adresse peut changer pour quelque chose comme
http://example.com/myApp/#page=5
sans recharger la page.
Mon problème est le suivant de la séquence:
- Un utilisateur signets de la première URL.
- L'utilisateur manipule l'application de telle sorte que la deuxième URL est l'état actuel.
- L'utilisateur clique sur le signet créé à l'étape 1.
- L'URL dans la barre d'adresse changements de http://example.com/myApp/#page=5 à http://example.com/myApp/#page=1, mais je ne sais pas de manière à détecter le changement qui s'est passé.
Si je détecte un changement de certaines JavaScript serait agir sur elle.
- Je suis curieux, pourquoi l'application conçue de cette façon? Je ne vois aucun besoin réel pour le changement d'URL.
- Il fonctionne comme une chaîne de requête, mais ne cause pas le navigateur à recharger la page. C'est qui a été fait, de sorte que la charge du client n'a pas à être récupéré et chargé à chaque fois qu'une page est modifiée. La charge utile n'est pas facilement mis en cache, nécessite JavaScript temps d'initialisation, et ne serait pas fournir au client un sans heurt de l'expérience.
InformationsquelleAutor JoshNaro | 2009-12-18
Vous devez vous connecter pour publier un commentaire.
HTML5 introduit un hashchange événement qui vous permet de vous inscrire pour les notifications de l'url de hachage modifications sans interrogation pour eux avec une minuterie.
Il pris en charge par tous les principaux navigateurs (Firefox 3.6, IE8, Chrome, d'autres basé sur Webkit navigateurs), mais je serais encore vous suggère fortement d'utiliser une bibliothèque qui gère l'événement pour vous - c'est à dire en utilisant un timer dans les navigateurs ne supportant pas le HTML5 événement et en utilisant le cas contraire.
Pour de plus amples informations sur l'événement, consultez https://developer.mozilla.org/en/dom/window.onhashchange et http://msdn.microsoft.com/en-us/library/cc288209%28VS.85%29.aspx.
vérifier l'adresse actuelle périodiquement à l'aide de setTimeout/intervalle:
Vous devez étendre l'emplacement de l'objet à exposer un événement que vous pouvez lier à.
ie:
SWFaddress est une excellente bibliothèque pour ces types de choses.