繁体   English   中英

如何在 JavaScript 中使用特定的 delta 触发滚动(鼠标滚轮)事件?

[英]How to fire scroll (mousewheel) event with specific delta in JavaScript?

我正在尝试通过document.createEvent创建自定义事件来触发 chrome 中的滚动事件,我想触发绑定到滚动或鼠标滚轮侦听器的所有函数(我不确定它是否滚动浏览器本身?)。 我通过onmousewheel侦听器捕获事件,但是当我用来指定它们的值时,事件对象具有deltaX == 0 && deltaY == 0

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);

我不确定我是否必须使用这种类型的事件和这种初始化类型。 那么如何指定事件的增量值呢?

首先,这已被弃用,您根本不应使用initMouseEvent

您应该做的是使用delta params https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent创建WheelEvent ,然后如果您想继续使用自定义 delta 值或类似的东西来调度它那。

 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM