javascript - 在 Firefox 插件中注册控制台服务监听器

标签 javascript firefox firefox-addon

我在我的 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 是否存在任何突出的错误,但似乎没有,所以我不知道为什么这不起作用。

最佳答案

没关系,我在 Mozilla irc 上的人的帮助下解决了这个问题:

let Cc = Components.classes;
let Ci = Components.interfaces;
let Cu = Components.utils;

Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");

var consoleLis = {
    observe:function( aMessage ){

        dump("observed "+aMessage.message);

        Services.console.unregisterListener(consoleLis); 

    },
    QueryInterface:XPCOMUtils.generateQI([Ci.nsIConsoleListener])
};


Services.console.registerListener(consoleLis); 

Services.console.logStringMessage('this is a test');

关于javascript - 在 Firefox 插件中注册控制台服务监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116279/

相关文章:

javascript - 在 Razor View 中加载图片库花费太多时间

javascript - 如何正确计算滚动条 handle 的大小(高度)?

html - 高度 100% 不适用于所有浏览器

java - 为什么 nsIScriptableInputStream 不工作?

javascript - 如何将 Firefox WebExtension 选项页面作为选项卡打开,与大约 :addons 分开

javascript - 用户脚本转为 Firefox 插件未在浏览器中运行

javascript - 如何检测滚动值是否大于窗口高度?

Alpine Docker 镜像中带有 Firefox-ESR 的 Selenium

python - selenium firefox webdriver 中的 HTML 未加载

javascript - 无重启 FF 附加组件中的 HTTP 请求观察器