Supposons que mon code HTML soit et js est p> Je veux obtenir la valeur hachage qui était avant le changement de hachage. cela possible? Si oui, comment? p> p>
4 Réponses :
Utilisez que
$(window).on("hashchange", function(e){
console.log(e.originalEvent.oldURL)
console.log(e.originalEvent.newURL)
})â;
Quel navigateur et système d'exploitation utilisez-vous
Mozilla Firefox et OS Windows 7 et vous ne devriez pas demander cela parce que je veux une réponse compatible avec navigateur croisée
Ceci est indéfini sur IE 11.
Vous devez suivre le dernier hachage, par exemple:
Cela ne semble pas fonctionner sous IE9 Event.fragment code> est également indéfini. A dû le remplacer par emplacement.hash.replace (/ ^ # /, '') code>
En réalité, la solution fournie par AMIT fonctionne, mais avec une bibliothèque JQuery et une plate-forme crossplate.
Voici une solution plus simplifiée à l'aide de Core JavaScript et Crossbrower. (Vérifié avec la dernière version de IE / FF / CHROME / SAFARI) P>
window.onhashchange = function(e){
console.log(e);
var oldURL = e.oldURL;
var newURL = e.newURL;
console.log("old url = " + oldURL);
console.log("new url = " + newURL);
var oldHash = oldURL.split("#")[1];
var newHash = newURL.split("#")[1];
console.log(oldHash);
console.log(newHash);
};
Comme indiqué ci-dessus, cela fonctionne sur la dernière version de (IE / FF / CHROME / SAFARI). Les codes sont bien testés et travaillent pour moi sur tous les quatre navigateurs indiqués. Je ne sais pas si FF12 est la dernière version du navigateur. Quand j'ai testé, ma version FF était FF20.0.
Vous pouvez vérifier la valeur de E (effectuée en deuxième ligne) et découvrez les variables OLDURL et NEWURL (E.OLDURL et E.NEWURL) si elles existent ou non. Bonne chance.
Je voulais dire FF19 sur Linux. Quoi qu'il en soit, j'utilise window.location.hash code> qui semble être beaucoup plus fiable.
Terminez les points non liés que vous avez faits. fenêtre.location.hash code> et window.onhashchange code> sont pour deux objectifs différents. window.location.hash code> vous donne simplement votre index de hachage mais window.onhashchange code> déclenche si l'index de hachage est modifié. Et la solution ci-dessus vous aide à savoir quel indice actuel est et quel est l'index passé avant que votre hachage soit modifié. Essayez de comprendre le scénario d'abord mon garçon. Toute façon heureuse de savoir que votre problème est résolu.
Cette solution ne semble pas fonctionner dans IE10. Sortie est [Objet Object] Old URL = Nouvelle URL non définie = Script indéfini5007: impossible d'obtenir la propriété 'division' de référence non définie ou nulle
Oui peut-être que vous avez raison. La solution travaillait au moment où je l'ai écrite et l'a testée sur la dernière version au moment de la rédaction.
N'utilisez pas
(function(w, $){
var UrlHashMonitor = {};
UrlHashMonitor.oldHash = '';
UrlHashMonitor.newHash = '';
UrlHashMonitor.oldHref = '';
UrlHashMonitor.newHref = '';
UrlHashMonitor.onHashChange = function(f){
$(window).on('hashchange', function(e){
UrlHashMonitor.oldHash = UrlHashMonitor.newHash;
UrlHashMonitor.newHash = w.location.hash;
UrlHashMonitor.oldHref = UrlHashMonitor.newHref;
UrlHashMonitor.newHref = w.location.href;
f(e);
});
};
UrlHashMonitor.init = function(){
UrlHashMonitor.oldHash = UrlHashMonitor.newHash = w.location.hash;
UrlHashMonitor.oldHref = UrlHashMonitor.newHref = w.location.href;
};
w.UrlHashMonitor = UrlHashMonitor;
return UrlHashMonitor;
})(window, window.jQuery);
/*
* USAGE EXAMPLE
*/
UrlHashMonitor.init();
UrlHashMonitor.onHashChange(function(){
console.log('oldHash: ' + UrlHashMonitor.oldHash);
console.log('newHash: ' + UrlHashMonitor.newHash);
console.log('oldHref: ' + UrlHashMonitor.oldHref);
console.log('newHref: ' + UrlHashMonitor.newHref);
//do other stuff
});
Duplicaté possible: Stackoverflow.com/Questtions/680785/... < / a>