2011-12-17 153 views
0

我已经使用Firefox插件SDK构建了以下代码,该插件在页面加载时成功向当前活动选项卡上的NotificationBox添加通知。如何在Firefox页面加载时通知正确的选项卡?

如何将其更改为使用getNotificationBox()方法的参数化版本,以便选择属于正在加载Document的选项卡上的NotificationBox

const observer = require('observer-service'); 
var {Cc, Ci, Cr, Cu} = require('chrome'); 

observer.add('document-element-inserted', function(document) { 
    var window = document.defaultView; 
    var mainWindow = window.QueryInterface(Ci.nsIInterfaceRequestor) 
        .getInterface(Ci.nsIWebNavigation) 
        .QueryInterface(Ci.nsIDocShellTreeItem) 
        .rootTreeItem 
        .QueryInterface(Ci.nsIInterfaceRequestor) 
        .getInterface(Ci.nsIDOMWindow); 

    var notificationBox = mainWindow.gBrowser.getNotificationBox(); 

    notificationBox.appendNotification(
    'This is my message', 
    'myNotifyId', 
    'chrome://global/skin/icons/information-16.png', 
    notificationBox.PRIORITY_INFO_LOW 
); 
}); 

回答

1

尝试:

var notificationBox = mainWindow.gBrowser.getNotificationBox(mainWindow.gBrowser.getBrowserForDocument(document)); 

如果document可能是一个框架,你将需要使用document.defaultView.top.document代替。

+0

很好。谢谢。 – Cheekysoft 2011-12-18 13:09:01

相关问题