J'utilise un groupe de balises d'ancrage pour la navigation mobile en raison d'une très longue page, mais lorsque vous cliquez sur la balise d'ancrage, elle l'ajoute à l'URL. Voici une petite maquette,
<a href="#anchor">page down</a>
<span id="anchor"></span>
Comment puis-je conserver la fonctionnalité d'ancrage et empêcher que #anchor soit ajouté à l'URL?
À votre santé
Réponses:
6 pour la réponse № 1Vous pourriez utiliser scrollTop pour obtenir le même effet:
$(".js-hook--page-down").click(function (e) {
e.preventDefault();
$("html, body").animate({
scrollTop: $("#anchor").offset().top - 200
}, 1500);
});
Et le HTML:
<a class="js-hook--page-down">page down</a>
<span id="anchor"></span>
Vous avez cependant besoin d'un nouveau crochet Js pour chacune des ancres de page.
0 pour la réponse № 2
C’est à vous de décider comment vous voulez, mais je ferais ceci:
<script type="text/javascript">
$(window).on("hashchange", function(e){ // listen if hashtag is being added to the URL
location.href = location.href.replace(location.hash,"") //replace it with nothing
console.log("bam!"); //enjoy it
});
</script>
0 pour la réponse № 3
@DGibbs J'ai modifié votre code afin que, plutôt que de l'écrire pour chaque ancre de la page, vous puissiez l'utiliser à la place.
$(".js-anchor").click(function (evt) {
evt.preventDefault();
var anchor = $(this).text();
$("html, body").animate({
scrollTop: $("#" + anchor).offset().top
}, 1500);
});
Peut-être que cela aidera aussi quelqu'un d'autre. Pour référence le html ressemble à ceci
<a class="js-anchor">Top</a>
<span id="Top"></span>
Évidemment, avec ce code, votre identifiant d'ancre doit correspondre au texte à l'intérieur du lien pour que cela fonctionne.
-1 pour la réponse № 4
Ajouter click
écouteur d'événement à vos liens et utiliser preventDefault
.
$(".mylink").click(function(event){
event.preventDefault();
});
Cela empêchera les liens de modifier les URL.