【问题标题】:firefox restartless bootstrap extension script not reloadingFirefox 无重启引导扩展脚本未重新加载
【发布时间】:2014-07-12 08:18:28
【问题描述】:

如果不重新启动 firefox,我无法在 firefox 扩展中得到反映的源代码修改。 我相信这在使用引导方法时应该是可能的。

这里是源代码:
bootstrap.js

var GOOGBAR_MODULES = [ "resource://googbar/loader.js"];

function startup(params, reason)
{

    var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
    var modulesURI = Services.io.newURI(__SCRIPT_URI_SPEC__ + "/../content/", null, null);
    res.setSubstitution("googbar", modulesURI);
    Cu.import("resource://googbar/loader.js");
} 


function shutdown(params, reason)
{ 
    // Unload all modules added with Cu.import
    GOOGBAR_MODULES.forEach(Cu.unload, Cu);

    // Clear our resource registration
    var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
    res.setSubstitution("googbar", null);

}

loader.js

console.log("googbar loader loaded");

当我在加载程序中更改消息时,它不会反映在 Firefox(版本 30)中。我在配置文件扩展文件夹中有一个文件“goog@myself.com”,其中包含我的开发文件夹的路径。 当我从 about:extensions 页面启用/禁用或删除/撤消时,我对 loader.js 所做的更改不会反映出来,除非我重新启动 firefox。 任何关于为什么代码没有动态加载的指针都会有所帮助。

我对使用 SDK 进行开发不感兴趣。我还设置了https://developer.mozilla.org/en-US/Add-ons/Setting_up_extension_development_environment中所述的各种标志

编辑 1:

这是我用来测试场景的打包为 xpi(1.35KB) 的上述代码的链接。 https://www.dropbox.com/s/0io8b081ybu632q/test.xpi

编辑 2:

我的目标是加快开发过程,而不必为每次代码更改重新启动浏览器。这是一个相关的post,但似乎已经过时了。

【问题讨论】:

    标签: javascript firefox firefox-addon firefox-addon-restartless


    【解决方案1】:

    AddonManager 或更具体地说是XPIProvider 调用flushStartupCache,但仅在卸载插件时(包括在升级和降级期间)。但是,在会话中禁用或启用加载项时不会清除缓存。

    • 要么在 bootstrap.js 中放置一个等效方法,以便在 shutdown 时调用(你应该在发布版本中这样做)。
    • 或者只是继续重新启动那个该死的浏览器。就我个人而言,我发现使用 "Restartless Restart" 附加键盘快捷键重新启动并在 about:addons 中漫游会更快。

    PS:我不能绝对确定这是唯一的问题,因为我无法测试你的东西,因为你没有提供一个完整的,可重现的例子。

    编辑是的,确实,在shutdown中添加以下内容就足够了,并且没有其他阻塞问题:

    if (reason == ADDON_DISABLE) {
      Services.obs.notifyObservers(null, "startupcache-invalidate", null);
    }
    

    【讨论】:

    • 我已编辑问题以提供我正在使用的 xpi 的链接。
    • 谢谢。那行得通。只是想知道可能会出现哪些其他阻塞问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多