web-dev-qa-db-fra.com

Comment déclencher un événement sur le défilement sans défilement

ma question est, comment puis-je déclencher (simuler ou quelque chose) un événement sur le défilement. Dans mon cas particulier, je ne veux pas charger toutes les conservations dans LinkedIn en écrasant toutes les conservations, car il y en a trop! 

Je n'ai pas besoin d'une solution PHP ou Javascript. Utiliser simplement dev-tools sur chrome suffit pour atteindre mon objectif.

11
CTSchmidt

Vous avez absolument besoin d'une solution Javascript. Que pensez-vous d'autre que l'événement va être à l'écoute ou au déclenchement?

Si vous voulez déclencher un événement de défilement, faites défiler littéralement l'endroit où vous vous trouvez déjà en tapant window.scrollTo(window.scrollX, window.scrollY); dans votre console d'outils de développement. Vous pouvez également en simuler une en combinant les fonctions CustomEvent et dispatchEvent .

Si vous souhaitez déclencher quelque chose sur un événement de défilement, écoutez-les à l'aide de window.addEventListener("scroll", function(evt) { ... }); et faites en sorte que la fonction de gestion fasse tout ce que vous devez faire.

10

Cela ne fonctionne pas sur Chrome ou Firefox

window.scrollTo(window.scrollX, window.scrollY);

Cela fonctionne à la fois:

window.scrollTo(window.scrollX, window.scrollY - 1);
window.scrollTo(window.scrollX, window.scrollY + 1);

Pas chic, mais ça marche.

Notez que seule la première ligne de code est nécessaire, l’autre consiste simplement à ramener le parchemin là où il était. Je devais déclencher une fonction de défilement sur un bouton. Si vous appuyez deux fois sur le bouton, l'effet du défilement est visible et ce n'est pas très sophistiqué. C'est pourquoi je préfère ajouter la deuxième ligne de code également.

9
Fran Cano

Vous pouvez également déclencher manuellement un événement réel scroll comme suit:

el.dispatchEvent(new CustomEvent('scroll'))

Ce qui semble un peu moins astucieux (et plus performant) que le double défilement par +1 et -1 pixels ...

Cela devrait permettre à tout élément de code d'écouter un événement scroll.

Edit: pour prendre en charge IE11 ou un autre navigateur hérité, envisagez l’utilisation d’un fichier CustomEvent comme mdn-polyfills

9
Pandaiolo

window.scrollTo(window.scrollX, window.scrollY); ne fonctionne pas pour moi dans Firefox . Rien ne se produit, et il semble en être ainsi car aucun défilement n’a réellement besoin d’être effectué pour aller à l’endroit où vous vous trouvez déjà.

MAIS window.scrollTo(window.scrollX, window.scrollY-1); fonctionne. Par cette commande, la fonction d'événement window.scroll est déclenchée.

(Essayer de tricher par exemple avec: window.scrollTo(window.scrollX, window.scrollY-0) ne fonctionne pas non plus.)

1
user2280102

Parfois, vous avez besoin de trouver le scrollElement. Dans mon cas, scrollElement est body et tourne sur mobile, le code ci-dessous fonctionne donc bien:

document.body.scrollTo(window.scrollX, window.scrollY + 1);

J'espère que ça vous sera utile.

0
Jerry Ni