firefox startScroll和sendAsyncMessage

时间:2014-09-18 22:55:58

标签: firefox firefox-addon autoscroll firefox-addon-restartless

在最新版本的Firefox 31+中,startScroll(e)函数已更改,应使用startScroll(scrolldir,screenX,screenY)调用

变化的差异: https://hg.mozilla.org/integration/mozilla-inbound/diff/cc298e4b0f47/toolkit/content/widgets/browser.xml

在更改之前,我可以从我的经典bootstrap.js扩展程序手动启动startScroll:

aWindow.gBrowser.selectedBrowser.startScroll(e);

我收到了关于使用sendAsyncMessage "Autoscroll:Start"的Mozilla IRC频道的提示,所以我尝试了各种组合

aWindow.gBrowser.selectedBrowser.startScroll("NSEW", e.screenX, e.screenY);
aWindow.gBrowser.selectedBrowser.messageManager.sendAsyncMessage("Autoscroll:Start", {scrolldir:"NSEW", screenX:e.screenX, screenY:e.screenY});

但没有任何作用。

可以在http://pastebin.com/azv1jePt

上看到我的问题的最小boostrap.js扩展

有没有人知道如何直接从bootstrap.js扩展程序在较新版本的Firefox中手动启动自动滚动,而不使用任何 chrome 脚本?

感谢
Senicar

1 个答案:

答案 0 :(得分:0)

对我有用的是从帧脚本模拟中间按钮mousedown事件(无需调用startScroll或sendAsyncMessage):

content.document.documentElement.dispatchEvent(new content.MouseEvent("mousedown", {
    view: content,
    bubbles: true,
    cancelable: true,
    button: 1,
    screenX: /* anEvent.screenX */,
    screenY: /* anEvent.screenY */
}));

希望这有帮助