我在我的 Firefox 插件中注册 nsIConsoleListener 时遇到了一些问题。这是我的代码:
var conSer = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
var consoleLis = {
observe:function( aMessage ){
conSer.unregisterListener(consoleLis);
Components.utils.reportError("observed "+aMessage.message);
},
QueryInterface: function (iid) {
if (!iid.equals(Components.interfaces.nsIConsoleListener) && !iid.equals(Components.interfaces.nsISupports)) {
Components.utils.reportError("NS_ERROR_NO_INTERFACE");
throw Components.results.NS_ERROR_NO_INTERFACE;
}
return this;
}
};
conSer.registerListener(consoleLis);
conSer.logStringMessage('this is a test');
似乎无论我在上面尝试什么代码变体,QueryInterface 似乎总是抛出错误。我通过 bugzilla 查看了 nsIConsoleListener 是否存在任何未解决的错误,但似乎没有,所以我不知道为什么这不起作用。