La seule façon de faire cela (et c'est ainsi que le "reallysimplehistory" le fait), est de définir un intervalle qui vérifie le hash actuel et le compare à ce qu'il était avant, nous faisons cela et laissons les abonnés s'abonner à un événement de changement que nous déclenchons si le hash change ce n'est pas parfait mais les navigateurs ne supportent pas vraiment cet événement de façon native.
Mettez à jour pour que cette réponse reste d'actualité :
Si vous utilisez jQuery (ce qui, aujourd'hui, devrait être quelque peu fondamental pour la plupart), une solution intéressante consiste à utiliser l'abstraction que jQuery vous offre en utilisant son système d'événements pour écouter les événements hashchange sur l'objet fenêtre.
$(window).on('hashchange', function() {
//.. work ..
});
Ce qui est bien ici, c'est que vous pouvez écrire du code qui n'a même pas besoin de se préoccuper de la prise en charge des changements de hachage, mais vous devez faire un peu de magie, sous la forme d'une fonctionnalité jQuery quelque peu moins connue. Événements spéciaux jQuery .
Cette fonction permet essentiellement d'exécuter un code de configuration pour tout événement, la première fois que quelqu'un tente d'utiliser l'événement d'une manière ou d'une autre (comme une liaison avec l'événement).
Dans ce code de configuration, vous pouvez vérifier la prise en charge native du navigateur et, si le navigateur ne l'implémente pas, vous pouvez configurer une minuterie unique pour surveiller les changements et déclencher l'événement jQuery.
Cela libère complètement votre code de la nécessité de comprendre ce problème de support, l'implémentation d'un événement spécial de ce type est triviale (pour obtenir une simple version fonctionnant à 98%), mais pourquoi faire cela ? quand quelqu'un d'autre a déjà .
6 votes
Consultez ce plugin jquery : github.com/cowboy/jquery-hashchange
9 votes
Histoire.js prend en charge la fonctionnalité de gestion d'état HTML5 (vous n'avez donc plus besoin d'utiliser des hachages !) et la dégrade gracieusement pour les navigateurs HTML4 en utilisant des hachages. Il prend en charge jQuery, MooTools et Prototype dès sa sortie de l'emballage.
0 votes
@balupton, En fait nous il faut toujours utiliser des hachages pour indiquer à l'utilisateur qu'une "nouvelle page" a été insérée dans son historique, à moins que vous n'utilisiez la modification de l'URL pour indiquer cette information.
1 votes
[Hasher] github.com/millermedeiros/hasher
0 votes
Hmm... Je pense que vous avez besoin de plus jQuery