如何覆盖默认下载/保存按钮处理程序?

时间:2013-01-05 20:14:02

标签: firefox-addon

我正在尝试制作一个扩展程序,将下载管理器窗口作为侧边栏或其他方式打开,而不是新窗口。

  • 为此,我必须首先在“保存对话框”中停止“保存”按钮,将下载管理器打开为新窗口。

  • 然后,我必须将按钮的oncommand属性设置为我的自定义函数。

我认为可以做到:(请参阅编辑,而不是此内容)

(如果我在“保存对话框”中有“保存”按钮的ID,我可以 removeAttribute("oncommand")然后setAttribute("oncommand", "some_other_function");

尽管如此,我还不清楚更新的属性是否会持续。如果通过openDialog电话(内部)打开“保存”对话框,则每次都会显示一个新对话框。

  • 这是正确的做法吗?那么,“保存”按钮的ID是什么? (另外,我如何知道何时打开“保存对话框”?这就是保存按钮有任何意义的时候。)
  • 怎么办呢?)

编辑:

我认为可以通过XPCOM接口实现。 我有什么可以

  • 知道何时启动下载/保存?
  • 访问上面的“
  • ”后打开的“保存”对话框

1 个答案:

答案 0 :(得分:1)

1 - 我可以判断使用nsiDownloadService XPCOM界面开始下载的时间。

var observerService = Components.classes["@mozilla.org/observer-service;1"]
                      .getService(Components.interfaces.nsIObserverService);
observerService.addObserver(this, "dl-start", false);

dl-start是必需的主题ID。 (我无法找到MDN中记录dl-start的位置。有人可以指出它吗?)

2 - 我只需将首选项browser.download.manager.showWhenStarting设置为false即可阻止Firefox在新窗口中打开自己的下载管理器。