试图模拟车轮事件[Firefox]

时间:2015-08-17 03:46:13

标签: javascript firefox

为了澄清我的例子,我想模拟一个打开窗口中心的滚动事件。这应该会影响给定页面上合理的主要滚动元素。

以下是一些相关页面
https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent#Values

这是我尝试过的。

scroll_evt = new WheelEvent('wheel', {
    deltaY:    10.0,
    deltaMode: WheelEvent.DOM_DELTA_LINE,
    clientX:   content.innerWidth/2,
    clientY:   content.innerHeight/2
});

-> wheel { target: null, buttons: 0, clientX: 520, clientY: 320, layerX: 0, layerY: 0 }

然而,尽管没有错误,但调度事件似乎没有任何效果。

window.dispatchEvent(scroll_evt);
-> true

所以我想知道:我的初始化程序中是否缺少一些关键属性? window是该活动的合适目标吗?我没有想法。

更新

这很有用。
https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendWheelEvent%28%29

var windowutils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                         .getInterface (Components.interfaces.nsIDOMWindowUtils);

windowutils.sendWheelEvent(window.innerWidth / 2, window.innerHeight / 2, 0, 10, 0,
                           WheelEvent.DOM_DELTA_LINE, 0, 0, 0, 0);

我仍然很好奇dispatchEvent的问题是什么。

1 个答案:

答案 0 :(得分:1)

您可以按位置获取元素:

var elem = document.elementFromPoint(content.innerWidth / 2, content.innerHeight / 2);

然后应用滚动:

elem.scrollTop += 10;