【问题标题】:chrome dispatching wheel eventchrome调度轮事件
【发布时间】:2011-07-20 02:26:15
【问题描述】:

我正在尝试在 chrome 中发送轮子事件,但仍然无法成功。我正在使用 WheelEvent 对象,但似乎无法正确“初始化”它。无论我做什么,delta 始终为 0。我查看了specification,但没有任何帮助。更有趣的是,当我实际使用鼠标滚轮滚动并尝试发送该事件时,我捕获了该事件,但增量再次为 0。有人遇到过这样的问题吗?这可能是一个错误吗?任何帮助都会很棒!

//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)
}

【问题讨论】:

  • 你能给我们一些代码吗?您如何注册事件侦听器,或者您只是设置回调?你是如何调度事件的?
  • 我添加了代码。事件被捕获,但页面没有滚动,因为增量为 0。
  • 好的,我找到了原因。我使用了错误的初始化函数。右边是this。但是我的页面仍然拒绝向下滚动。
  • @bellpeace,你有想过这个吗?什么是正确的初始化函数?不幸的是,您的链接已失效。
  • @AndrewB.,我已经添加了答案。

标签: google-chrome events mousewheel dispatch


【解决方案1】:

起初我不再需要此功能,但最近我回到了这个问题并找到了一种在 Chrome 上正确调度轮事件的方法。抱歉耽搁了,我完全忘记了这个问题。代码如下:

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

更多信息可以在here找到。 希望这会有所帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
相关资源
最近更新 更多