расширения Firefox, чтобы окно уведомлений отображалось на всех вкладках

#firefox-addon

#firefox-дополнение

Вопрос:

В 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:

У каждой вкладки есть собственное окно уведомлений. Вам просто нужно перебрать все браузеры и добавить уведомление к каждому из них. Одна вещь, которую вы должны знать, это то, что gBrowser.getNotificationBox может принимать элемент браузера:

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

Если вы не используете браузер, код возвращает окно уведомлений для активной вкладки.

Попробуйте это:

 различные браузеры = главное окно.gBrowser.браузеры;
 для (var i=0; i<browsers.length; i   ) {
 var nb = MainWindow.gBrowser.getNotificationBox(браузеры [i]);
 Устаревшее уведомление = примечание.appendNotification ("Ваша информация устарела", 
'устаревший-предупредить', 
'chrome://checksistem/skin/checksistem.png', 
 приоритет, кнопки); 
 }