火狐无需重启引导扩展脚本不重装(firefox restartless bootstrap exte

2019-10-20 10:48发布

我无法得到体现在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”。 我对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:

我的目标是在无需重新启动每次代码更改浏览器,以加快开发进程。 这里有一个相关的帖子 ,但似乎是一个过时的一个。

Answer 1:

AddonManager或者更具体地说是XPIProvider调用flushStartupCache但只有当附加卸载(包括在上游和降级)。 然而,禁用或启用会议期间的附加当缓存没有被清除。

  • 要么把等效的方法在你的bootstrap.js你打电话的时候, shutdown (你应该这样做在发行版本)。
  • 或者只是继续重申那个该死的浏览器。 我个人觉得它更快地只需重新启动与“无需重启重启”附加键盘快捷键和左右四处漫游:插件。

PS:我不能绝对肯定这是在发挥作用的唯一问题,因为我不能测试你的东西,因为你没有提供一个完整的 ,可重复的例子。

编辑是的,的确,把下面的关机是足够的,并且没有其他阻塞问题:

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


文章来源: firefox restartless bootstrap extension script not reloading