3

在最新版本的 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);

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

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

4

1 回答 1

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

希望这可以帮助

于 2015-11-18T19:12:12.007 回答