Je veux aller en haut de la page lorsque je clique sur le lien puis ouvrir le lien dans le même onglet
J'ai essayé d'utiliser ce code, mais je vais seulement en haut de la page et le lien ne s'ouvre pas p >
Ceci est mon JS
<a href="./current_page?page=5" class="scrollToTop">></a>
Et ceci est mon lien HTML
$(document).ready(function(){
$('.scrollToTop').click(function(){
$('html, body').animate({scrollTop : 0},1800);
return false;
});
});
Veuillez aider) p >
3 Réponses :
Essayez ceci
$(document).ready(function(){
$('.scrollToTop').click(function(){
const url = $(this).attr('href');
$('html, body').animate({scrollTop : 0}, 1800, function() {
window.open(url);
});
return false;
});
});
Cela fonctionne mais ouvre le lien dans un nouvel onglet, je veux l'ouvrir dans le même onglet
ajouter un deuxième paramètre à window.open : window.open (url, '_self')
Une façon d'y parvenir consiste à exécuter la navigation de page via JavaScript, une fois l'animation de défilement vers le haut terminée.
Cela peut être fait en naviguant dans le navigateur pendant le rappel .promise (). done (..) , où vous mettriez à jour le location en href de le lien cliqué:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <h1>Scroll past</h1> <h1>Scroll past</h1> <h1>Scroll past</h1> <h1>Scroll past</h1> <a href="./current_page?page=5" class="scrollToTop">Scroll to top, then navigate ></a>
$(document).ready(function() {
$('.scrollToTop').click(function() {
/* Obtain href from clicked link element */
const href = $(this).attr('href');
$('html, body').animate({
scrollTop: 0
}, 1800)
.promise()
.done(function() {
/* After animation complete, navigate to link's href */
location = href;
console.log(`Navigate: ${href} (won't work in stack overflow sandbox)`);
});
return false;
});
});
Est-il possible de le faire de manière asynchrone sans attendre la fin de l'animation?
Vous voulez dire démarrer la navigation pendant le défilement?
Oui) Parce que maintenant je dois attendre à la fin de la page pendant le chargement de la nouvelle page
Le risque de faire cela est que si la page se charge avant la fin de l'animation, vos utilisateurs ne subiront pas le défilement.
Vous voulez dire que la nouvelle page commencera à l'endroit où l'ancienne page a cessé de défiler?
Non, si la nouvelle page chargée avant la fin de l'animation de défilement, l'utilisateur passera à la nouvelle page où il sera positionné en haut de l'écran
Puisque votre événement click renvoie false , la balise href de votre ancre ne sera pas redirigée.
Notez que puisque vous modifiez des itinéraires via une ancre, la page chargée commencera toujours en haut du corps.
Je change de faux en vrai et tout fonctionne maintenant! Merci! C'est exactement ce que je voulais réaliser. Lorsque l'animation commence, une nouvelle page se charge, et cela semble un peu plus rapide pour l'utilisateur Avant c'était quelque chose comme: l'utilisateur clique sur le bouton de la page suivante, tout se fige à cause du chargement, puis lorsque la page est complètement chargée, elle s'ouvre à partir de son haut
Heureux d'avoir pu aider :)
Ourrrr vous pouvez cibler et
point d'ancrageavec unhrefdroit dans le lien ..... w3docs.com/snippets/html/...