Est-il possible de savoir si un événement de défilement a été déclenché par le navigateur ou par l'utilisateur? Plus précisément, lors de l'utilisation du bouton retour, un navigateur peut sauter à la dernière position de défilement connue. Si je lie un événement de défilement, comment puis-je savoir si cela a été causé par l'utilisateur ou par le navigateur?
$(document).scroll( function(){
//qui a fait cela ?!
});
Je distingue trois types de situations qui provoquent un défilement dans un navigateur.
- L'utilisateur effectue une action. Par exemple, utilise la molette de la souris, les touches de direction, les touches de page haut/bas, les touches de début/fin, clique sur la barre de défilement ou en fait glisser le curseur.
- Le navigateur défile automatiquement. Par exemple, lorsque vous utilisez le bouton retour dans votre navigateur, il sautera automatiquement à la dernière position de défilement connue.
- Le JavaScript effectue un défilement. Par exemple,
element.scrollTo(x,y)
.
1 votes
Je ne suis pas sûr de votre question, si vous considérez le saut en utilisant le bouton retour vers moi un événement de défilement du navigateur ou de l'utilisateur. En général : Que considérez-vous comme "défilement par le navigateur" ? Si vous voulez dire le défilement initié par votre script, alors tout ce que vous avez à faire, c'est lorsque votre script défile, soit de désactiver le gestionnaire d'événements, soit de définir un indicateur pour que le gestionnaire d'événements sache l'ignorer.
0 votes
J'ai considéré le défilement via le bouton de retour comme un "défilement du navigateur". Tout autre chose - la molette de la souris, les flèches haut/bas, le clic sur le bouton central, etc. serait un défilement de l'utilisateur. Je suppose que ma vraie question pourrait être - y a-t-il un moyen de différencier d'où provient un événement ? J'ai regardé les propriétés sur l'objet événement, mais je n'ai rien trouvé. Les trois scénarios que je peux imaginer sont le défilement initié par le navigateur, le défilement initié par JavaScript et le défilement initié par l'utilisateur. J'espère que cela clarifie les choses.
0 votes
@mrtsherman J'ai trouvé certains de ces éléments tout en obtenant le même résultat : stackoverflow.com/questions/2834667/…