为了澄清我的例子,我想模拟一个打开窗口中心的滚动事件。这应该会影响给定页面上合理的主要滚动元素。
以下是一些相关页面
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
是该活动的合适目标吗?我没有想法。
更新
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
的问题是什么。
答案 0 :(得分:1)
您可以按位置获取元素:
var elem = document.elementFromPoint(content.innerWidth / 2, content.innerHeight / 2);
然后应用滚动:
elem.scrollTop += 10;