J'ai quelques a
qui exécutent des fonctions via javascript et avoir un #
défini comme le href
Cependant, j'ai récemment modifié quelque chose qui fait qu'ils essaient de recharger la page au lieu de ne rien faire, ce qui casse leur fonctionnalité.
Qu'est-ce que je peux chercher qui pourrait causer cela ?
document.getElementById("link").onclick = function(){alert("do something javascript")};
<a id="link" href="#">Do Some JS</a>
Clicking this however reloads page and am unsure what i have done to cause this to reload the page.
Je ne peux pas reproduire dans le snippet, si je le pouvais je ne poserais pas la question, mais quelque chose fait que ces liens rechargent la page, ce qui n'est pas un comportement attendu.
Jusqu'à présent, je ne peux penser qu'à une solution rapide et sale :
$('a[href="#"]')).click(function() {
e.preventDefault();
});
J'aimerais toutefois savoir ce qui pourrait être à l'origine de ce problème.
Le problème
Ok, je l'ai trouvé, merci pour votre aide :
window.onpopstate = function(e){
if(e.state !== null) {
} else {
location.reload();
}
}
Cela fera l'affaire, c'est sûr.
Je pense que c'est parce que, comme les pages dépendent fortement d'ajax, il n'y avait aucun moyen de revenir à l'endroit où vous étiez.
Je me suis dit que le moyen le plus simple était de faire en sorte que les urls se mettent à jour lors des changements d'ajax, de sorte que lorsque je clique sur le bouton de retour, l'url change pour la dernière action, puis la page se recharge correctement lors du changement d'état du pop.
Ma solution rapide
Je vais changer le code en :
window.onpopstate = function(e){
if(e.state !== null) {
} else {
if(window.location.href.substr(window.location.href.length - 1) != "#") {
location.reload();
}
}
}