Firefox重新启动引导扩展脚本不重新加载 [英] firefox restartless bootstrap extension script not reloading

查看:229
本文介绍了Firefox重新启动引导扩展脚本不重新加载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法在不重新启动firefox的情况下获得反映在Firefox扩展中的源代码修改。
我相信这应该是可能的,当使用bootstrap方法。

以下是源代码:

bootstrap.js

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

函数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);



函数关闭(params,reason)
{
//卸载所有添加了Cu.import
的模块GOOGBAR_MODULES.forEach (Cu.unload,Cu);

//清除资源注册
var res = Services.io.getProtocolHandler(resource)。QueryInterface(Ci.nsIResProtocolHandler);
res.setSubstitution(googbar,null);

$ b

loader.js p>

  console.log(googbar loader loaded); 

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



我对使用SDK进行开发并不感兴趣。我还设置了各种标志,如 https://developer.mozilla.org / zh-CN / Add-ons / Setting_up_extension_development_environment



编辑1:

这里是上面的代码打包为一个xpi(1.35KB)的链接,我正在使用测试场景。 https://www.dropbox.com/s/0io8b081ybu632q/test.xpi



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

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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆