2017-10-03 3 views
0

J'essaie de déclencher l'événement de défilement dans le chrome avec la création d'événement personnalisé par document.createEvent et je veux déclencher toutes les fonctions liées aux écouteurs de défilement ou mousewheel (je ne suis pas sûr si elle défile le navigateur lui-même?). J'attraper événement par onmousewheel auditeur, mais objet d'événement ont deltaX == 0 && deltaY == 0 quand je spécifier leurs valeurs:Comment déclencher un événement scroll (mousewheel) avec delta spécifique en JavaScript?

document.documentElement.onmousewheel = function(e) { 
    console.log(e.deltaX, e.deltaY, e.wheelDeltaX, e.wheelDeltaY) // 0, 0, 0, 0 
} 

var e = document.createEvent('WheelEvent'); 
e.initMouseEvent('mousewheel', true, true, window, 120, 0, 0, 0, 0, 0, 0, 0, 0, 
0, null); 
e.wheelDeltaY = 120; 
e.deltaY = 120; 
document.documentElement.dispatchEvent(e); 

Je ne suis pas sûr que je dois utiliser ce type d'événement et ce type de initaliztion. Alors, comment puis-je spécifier les valeurs delta de l'événement?

Répondre

0

window.addEventListener('wheel', function(e) { 
 
    console.log(e.deltaY) 
 
    if (e.deltaY < 0) { 
 
    console.log('scrolling up'); 
 
    document.getElementById('status').innerHTML = "scroll up"; 
 
    } 
 
    if (e.deltaY > 0) { 
 
    console.log('scrolling down'); 
 
    document.getElementById('status').innerHTML = "scroll down"; 
 
    } 
 
});
<div id="status"></div>

+0

Ce n'est pas ce dont j'ai besoin. Avez-vous même lu ma question? – Vyacheslav

0

Tout d'abord, cela est dépréciée et vous ne devriez pas utiliser initMouseEvent du tout.

Ce que vous devez faire est de créer WheelEvent avec delta params https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent puis l'expédier si vous voulez continuer avec les valeurs de delta personnalisées ou des trucs comme ça.

+0

Maintenant, je fais comme ceci: 'var wheelEvent = new WheelEvent ('wheel', { deltaX: 120 }); document.documentElement.dispatchEvent (wheelEvent), '' Mais onmousewheel' et 'auditeurs onscroll' n'a pas déclenché – Vyacheslav

+0

je l'ai eu, je devais utiliser un autre événement, le résultat final ressemble que: ' var wheelEvent = new WheelEvent ( 'mousewheel', // faire défiler {deltaX: 120} ); ' Un grand merci à vous, mec! – Vyacheslav

+0

Mon plaisir. Si j'ai aidé, pourrais-je vous demander de modifier ma réponse? J'essaie d'arriver à 50pts pour pouvoir commenter partout :) – sztrzask