Poignée URL d'ancrage événement de changement en js
Comment puis-je écrire le code JavaScript de rappel du code qui sera exécuté sur tous les changements dans l'URL d'ancrage?
Par exemple de http://example.com#a à http://example.com#b
Vous devez vous connecter pour publier un commentaire.
Google Moteurs de Recherche Personnalisés utilisez une minuterie pour vérifier le hash, contre une précédente valeur, tandis que l'enfant iframe sur un autre domaine, les mises à jour du parent emplacement de hachage pour contenir la taille de l'iframe corps du document. Lorsque la minuterie attrape le changement, le parent peut redimensionner l'iframe pour correspondre à celle du corps, de sorte que les barres de défilement ne sont pas affichés.
Quelque chose comme ce qui suit permet d'obtenir le même:
Google Chrome 5, Safari 5, Opera 10.60, Firefox 3.6 et Internet Explorer 8 tous l'appui de la
hashchange
événement:et de les mettre ensemble:
jQuery dispose également d'un plugin qui permettra de vérifier la hashchange événement et fournir si nécessaire - http://benalman.com/projects/jquery-hashchange-plugin/.
MODIFIER: mise à Jour du navigateur (là encore).
var storedHash = window.location.hash;
à la mise-à-ensemble bloc de résumé. Btw: c'est aujourd'Hui appelé polyfill je pense.hashChange
surwindow
stackoverflow.com/questions/6390341/how-to-detect-url-changehashChanged(storedHash);
onhashchange
événement n'est pas disponible, et combine l'événementiel et de la minuterie approches de fournir une solution universelle. Mon point est que la réponse que vous avez lié à ajoute absolument rien à la réponse ici ;-). Ils fournissent les mêmes informations de base, de même le lien vers Ben Alman du plugin jQuery. La seule différence est que j'ai fourni un pur JS solution dans ma réponse.setInterval()
est la seule solution universelle pour l'instant. Mais il y a un peu de lumière dans l'avenir en forme de hashchange événementonhashchange
de l'événement la documentation de Mozilla Developer NetworkDe ce que je vois chez d'autres questions, la seule viable de la croix-navigateur solution est une minuterie. Découvrez cette question par exemple.
(Juste pour l'enregistrement.) Le YUI3 "hashchange" synthétique événement fait plus ou moins la même chose que l'on a accepté de répondre à
Vous pouvez obtenir plus d'information de ce
La Mutation des types d'événements
Je vous conseille d'utiliser
addEventListener
au lieu de l'écraserwindow.onhashchange
, sinon vous allez bloquer le cas pour d'autres plugins.À la recherche à l'échelle mondiale l'utilisation du navigateur aujourd'hui, une solution de repli n'est plus nécessaire.