【问题标题】:firefox startScroll and sendAsyncMessagefirefox startScroll 和 sendAsyncMessage
【发布时间】:2014-09-18 22:55:57
【问题描述】:

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

但没有任何效果。

我的问题的最小boostrap.js扩展可以在http://pastebin.com/azv1jePt上看到

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

谢谢
塞尼卡

【问题讨论】:

  • 这是一个我想不出来的笨蛋:(
  • @Noitidart 感谢您的调查,我想我得在 mozilla irc 频道上再试试运气,因为我也想不通。
  • 棘手。你们中的任何一个人都能解决这个问题吗?
  • @senicar 你找到这个了吗? irc 上的另一个人也有类似的问题

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


【解决方案1】:

对我有用的是从框架脚本模拟中键 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 */
}));

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多