Firefox addon can';我无法在v3.0.5中使用ff扩展

Firefox addon can';我无法在v3.0.5中使用ff扩展,firefox-addon,xul,Firefox Addon,Xul,有人知道自v3.0.5以来可能发生了什么变化,从而使扩展能够工作吗?或者,也许我错过了某个场景?我编写了这个插件,可以很好地与新版本配合使用,但我无法在旧版本中启动它。具体来说,我甚至无法使此部件正常工作(这在我的浏览器overlay.xul中): 这应该会将侦听器附加到新的obj(由linked.js定义),但是,我甚至没有在控制台中收到“initialization…”消息。有什么想法吗?错误控制台可能会告诉您,gBrowser.log似乎没有定义,或者至少不是一个函数。我也从来没听说

有人知道自v3.0.5以来可能发生了什么变化,从而使扩展能够工作吗?或者,也许我错过了某个场景?我编写了这个插件,可以很好地与新版本配合使用,但我无法在旧版本中启动它。具体来说,我甚至无法使此部件正常工作(这在我的浏览器overlay.xul中):



这应该会将侦听器附加到新的obj(由linked.js定义),但是,我甚至没有在控制台中收到“initialization…”消息。有什么想法吗?

错误控制台可能会告诉您,
gBrowser.log
似乎没有定义,或者至少不是一个函数。我也从来没听说过。可能是在FX3.5中添加的

  • 不使用,使用(假设您有xmlns=”http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul“在根元素上)
  • 不要从窗口覆盖注册应用程序全局侦听器(修改请求时使用http)。这样做将使您的代码在用户可能打开的每个窗口中运行一次。请改用XPCOM组件-
  • 不要用自己的属性污染公共对象(如gBrowser或全局对象(使用
    var Cc
    )。如果每个人都这样做,没有两个扩展可以一起工作。将所有代码属性放在具有唯一名称的对象上。
    • 在加载事件之前访问
      gBrowser
      可能是导致您出现特定问题的原因
  • 并检查错误控制台以调试问题
  • 不要浪费时间尝试支持Firefox3。Mozilla已经一年多不支持它了,不应该用它来访问web

  • 不,您只是错过了它:我定义gBrowser.log是为了方便使用。consoleService.logStringMessage(msg)确实是这样。就个人而言,我不会将其附加到gBrowser,我会将其附加到“myExtension”对象(希望您有一个…),但这是一个单独的问题。如果有机会,我会再看一遍……我看你确实有一个,但它在
    gBrowser
    上。为什么不把它放在
    窗口上
    好的,我来试一试。但我不确定为什么要应用扩展。(正在加载-在加载项列表中)错误控制台中有输出吗?ctrl shift JIf我记得在about:config中正确,如果您必须将property:javascript.options.showincole设置为true才能从控制台看到错误,那么我可能错了。无论如何,如果没有帮助,请执行以下操作:发出警报(“某些消息”);在每一行之后(显然,每次发生时都要更改消息),运行浏览器时收到的最后一条消息就是错误所在(代码中的下一行)。我知道它并不复杂,但对于像这样的小代码,它是最快的调试技术,所以我采纳了你的建议,完全重写了它。我创建了一个基于xpcom的自注册组件,经过测试并正常工作。但是,当我将它放入目标系统时,我没有得到任何响应(我怀疑它会吞下错误,这很好)。复杂的是我不是在目标机器上开发的,所以我不能重新创建问题。我也不清楚为什么不支持FF3-FF4仍处于测试阶段。@最终用户:有Firefox 3.0.x、3.5.x和3.6.x系列,它们有很大的区别。我被你的主题(3.0.5)弄糊涂了,并假设你说的是3.0.x,这是不受支持的。Firefox 3.5计划于2010年8月下线(),3.6.x完全受支持,并且是最新版本。@最终用户:您的新问题完全值得单独提问,而不是评论讨论(提供尽可能多的信息)。
    <html:script>
    <![CDATA[
    
        var Cc = Components.classes;
        var Ci = Components.interfaces;
        var obSvc = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
    
        gBrowser.consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService);
        gBrowser.log = function(msg){
            this.consoleService.logStringMessage(msg);
        }
    
        gBrowser.newObj= new MyAddOn();
        gBrowser.log("initializing...");
        function regListener()
        {
            obSvc.addObserver(gBrowser.newObj, "http-on-modify-request", false);
        }
        function unregListener()
        {
            obSvc.removeObserver(gBrowser.newObj, "http-on-modify-request");
        }
    
        window.addEventListener("load", regListener, false);
        window.addEventListener("unload", unregListener, false);
    
    ]]>