Javascript firefox引导加载项:未执行安装事件

Javascript firefox引导加载项:未执行安装事件,javascript,firefox,firefox-addon,firefox-addon-sdk,Javascript,Firefox,Firefox Addon,Firefox Addon Sdk,我正在尝试创建一个引导加载项,它只是将安装时的新选项卡url设置为一个新值,并在卸载时将其重置为旧值 这是我的bootstrap.js。我认为install函数引发了一个异常,因为没有定义require,但我不确定调试器是否在正确的范围内执行我在Scratchpad中编写的代码 我在某个地方读到,引导扩展的api与附加sdk的api相同,因此要求应该是合适的。如果不是这样的话,请您引导我到一个页面,描述我可以在bootstrap.js中使用的代码,我没有找到任何内容:( 普通引导加载项不会自动访

我正在尝试创建一个引导加载项,它只是将安装时的新选项卡url设置为一个新值,并在卸载时将其重置为旧值

这是我的bootstrap.js。我认为install函数引发了一个异常,因为没有定义require,但我不确定调试器是否在正确的范围内执行我在Scratchpad中编写的代码

我在某个地方读到,引导扩展的api与附加sdk的api相同,因此要求应该是合适的。如果不是这样的话,请您引导我到一个页面,描述我可以在bootstrap.js中使用的代码,我没有找到任何内容:(


普通引导加载项不会自动访问SDK,即没有
require

  • 或者只使用非SDK的东西,比如
    nsIPrefBranch
    Services.jsm
    ,等等
  • 或者首先编写一个SDK附加组件
  • 或者自己为你的插件连接SDK加载程序。除了SDK插件本身(呵呵)之外,我所知道的唯一做这种事情的实例是

  • 普通引导加载项不会自动访问SDK,即没有
    require

  • 或者只使用非SDK的东西,比如
    nsIPrefBranch
    Services.jsm
    ,等等
  • 或者首先编写一个SDK附加组件
  • 或者自己为你的插件连接SDK加载程序。除了SDK插件本身(呵呵)之外,我所知道的唯一做这种事情的实例是
  • 发件人:

    在bootstrap中,你无法访问sdk之类的东西。我不知道如何访问这些东西

    但我做的正是你想要的本地化:D花了大约10分钟:D

    注意:在卸载过程中,本地化文件不可用这一怪癖。因此,在测试ADDON_DISABLE的区域时,我不得不将其移到Shutown程序。卸载过程中文件不可用是有道理的


    你问:

    您如何知道Services.prefs.getCharPref方法


    我回答说:

    我首先导入Services.jsm模块,然后查看MDN的所有功能:

    然后我看到
    prefs
    然后它链接到
    nsIPrefBranch
    ,并记录了所有内容。
    nsIPrefBranch2
    已被弃用,所以我知道它不是这样

    MDN是您的朋友:)

    发件人:

    在bootstrap中,您无法访问sdk之类的东西。我不知道如何访问那些东西

    但我做的正是你想要的本地化:D花了大约10分钟:D

    注意:在卸载过程中,本地化文件不可用的怪癖。所以在测试ADDON_DISABLE的区域时,我不得不将它移到Shutown程序。文件在卸载中不可用是有道理的


    你问:

    您如何知道Services.prefs.getCharPref方法


    我回答说:

    我首先导入Services.jsm模块,然后查看MDN的所有功能:

    然后我看到了
    prefs
    ,然后它链接到
    nsIPrefBranch
    ,并记录了所有内容
    nsIPrefBranch2
    已被弃用,所以我知道不是这样

    MDN是您的朋友:)


    你有一个解决办法:你还在寻找更多吗?或者这个问题已经解决了?很抱歉反应时间太长-是的,这个问题已经解决了。再次感谢!如果你也在这里添加答案,我会将其标记为solutionok cool no problem:)你在这里找到了解决方案:你还在寻找更多吗?或者这个问题已经解决了?很抱歉反应时间太长-是的,这个问题已经解决了。再次感谢!如果你也在这里添加答案,我会将其标记为solutionok cool no problem:)
    function startup(data, reason){
    
    }
    
    function shutdown(data, reason){
    
    }
    
    function install(data, reason){
        var prev_new_tab_url = require("sdk/preferences/service").get("browser.newtab.url");
        var data = require("sdk/self").data;
        var url = data.url("startpage.html");
        require("sdk/preferences/service").set("browser.newtab.url", url);
        var ss = require("sdk/simple-storage");
        ss.storage.prev_new_tab_url = prev_new_tab_url;
    }
    
    function uninstall(data, reason){
        var ss = require("sdk/simple-storage");
        var prev_new_tab_url = ss.storage.prev_new_tab_url;
        require("sdk/preferences/service").set("browser.newtab.url", prev_new_tab_url);
    }