firefox扩展,使通知框出现在所有选项卡中

时间:2011-05-19 06:37:47

标签: firefox-addon

Firefox有一个原生通知框系统: https://developer.mozilla.org/en/Code_snippets/Alerts_and_Notifications#Using_notification_box

我想以这样一种方式使用这个系统,它应该出现在所有打开的标签中。我只在当前打开的选项卡中警告您的代码。

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebNavigation).QueryInterface(Components.interfaces.nsIDocShellTreeItem).rootTreeItem.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow);
var nb = mainWindow.gBrowser.getNotificationBox();
//...
outdatedNotification = nb.appendNotification("Your information outdated",
                                'outdate-warn',
                                'chrome://checksistem/skin/checksistem.png',
                                priority, buttons);

1 个答案:

答案 0 :(得分:3)

每个标签都有自己的通知框。您只需要遍历所有浏览器并将通知添加到每个浏览器。您应该知道的一件事是gBrowser.getNotificationBox可以采用浏览器元素:

http://mxr.mozilla.org/mozilla-central/source/browser/base/content/tabbrowser.xml#337

如果您未通过浏览器,则代码会返回活动标签的通知框。

试试这个:

  var browsers = mainWindow.gBrowser.browsers;
  for (var i=0; i<browsers.length; i++) {
    var nb = mainWindow.gBrowser.getNotificationBox(browsers[i]);
    outdatedNotification = nb.appendNotification("Your information outdated",
                                    'outdate-warn',
                                    'chrome://checksistem/skin/checksistem.png',
                                    priority, buttons);
  }