Chrome分派轮事件

5
我正在尝试在Chrome中触发滚轮事件,但仍然无法成功。我正在使用WheelEvent对象,但似乎无法正确地“init”它。无论我做什么,delta值始终为0。我查看了规范说明,但没有帮助。更有趣的是,当我实际使用鼠标滚轮滚动并尝试分派该事件时,再次发现delta值为0。有人遇到过这样的问题吗?这可能是一个bug吗?任何帮助都将不胜感激!
//dispatching the wheel event
var evt = document.createEvent("WheelEvent");
evt.initEvent("mousewheel", true, true, null, 0, 0, 0, 0, 0, false, false, false, false, 0, null, -120);
window.dispatchEvent(evt)

// catching the wheel event
window.addEventListener('mousewheel', callback, true);
callback = function(evt){
       console.log(evt)
}

1
请问您能提供一些代码吗?您是如何注册事件监听器的,还是只是设置了回调函数?您是如何分发事件的? - Peter
我添加了代码。事件被捕获,但页面没有滚动,因为增量为0。 - bellpeace
好的,我找到了原因。我使用了错误的初始化函数。正确的函数是这个。但是我的页面仍然无法向下滚动。 - bellpeace
@bellpeace,你最后解决了这个问题吗?正确的初始化函数是什么?很遗憾,你的链接已经失效。 - Andrew B.
@AndrewB.,我已经添加了答案。 - bellpeace
1个回答

2

起初我不再需要这个功能,但最近重新遇到了这个问题,并找到了一种在Chrome上正确分派滚轮事件的方法。对于延迟,我很抱歉,我完全忘记了这个问题。代码如下:

var evt = document.createEvent("WheelEvent");
evt.initWebKitWheelEvent(deltaX, deltaY, window, screenX, screenY, clientX,
                        clientY, ctrlKey, altKey, shiftKey, metaKey);
node.dispatchEvent(evt);

更多信息可以在这里找到。 希望这可以帮助你。


2
这个不再起作用了,因为它已经从Chrome中删除:https://groups.google.com/a/chromium.org/forum/#!searchin/blink-dev/initWebkitWheelEvent$20/blink-dev/h_GoezQ4MQ4/Q5abFkhA76sJ - Micha Schwab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接