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

时间:2017-10-03 05:26:48

标签: javascript events

我正在尝试通过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);

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

2 个答案:

答案 0 :(得分:2)

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

您应该使用WheelEvent参数https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent创建delta,然后在您要继续使用自定义delta值或类似内容时调度它。

答案 1 :(得分:-1)

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>