Firefox无重启引导扩展脚本未重新加载
firefox restartless bootstrap extension script not reloading
如果不重新启动firefox,我无法获得firefox扩展中反映的源代码修改。我相信当使用bootstrap方法时,这应该是可能的。
源代码:
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所做的更改并不反映当我启用/禁用或删除/撤消about:extensions页面,除非我重新启动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:
我的目标是加快开发过程,而不必为每次代码更改重新启动浏览器。这里有一个相关的帖子,但似乎是一个过时的
AddonManager
或更具体地说,XPIProvider
调用flushStartupCache
,但仅在卸载附加组件时(包括在升级和降级期间)。但是,当禁用或启用会话中的附加组件时,缓存不会被清除。
- 在
shutdown
时调用的bootstrap.js
中放置一个等效的方法(您应该在发布版本中这样做)。 - 或者继续重复那个该死的浏览器。就我个人而言,我发现用"Restartless restart"插件键盘快捷键重新启动并在大约:addons中漫游会更快。
PS:我不能绝对确定这是唯一的问题,因为我不能测试你的东西,因为你没有提供一个完整的,可复制的例子。
编辑是的,确实,在shutdown中添加以下内容是足够的,并且没有其他阻塞问题:
if (reason == ADDON_DISABLE) {
Services.obs.notifyObservers(null, "startupcache-invalidate", null);
}
相关文章:
- 创建新数据和加载现有数据需要单独的视图吗
- 钛 - HTTPClient:打开新的控制器加载
- 保持 JavaScript 在浏览器控制台中运行,即使在新的页面加载之后也是如此
- 路由到新页面时加载不起作用
- 如何在新窗口完成加载后执行某些内容
- 使用新标题重新加载 html 页面
- Primefaces在打开新页面时加载数据消息
- Wordpress音频播放器和平滑状态.在新页面重新加载播放器时调用什么回调函数
- 用新数据重新加载renderer3d
- 文本不被渲染后,新的页面加载- JQuery移动
- 需要在新标签中加载pdf/doc文件,而不是下载,只是想在浏览器中阅读
- 用新参数重新加载页面
- Js和CSS不检测新页面何时加载
- 在新页面上加载一个flash视频,它在上一页上的位置
- 在新窗口中加载代码编写器视图
- 在控制台中使用新脚本重新加载页面
- 如何在加载新页面后加载AJAX数据
- 如何使用jQuery在新窗口中加载页面,然后关闭它们
- Jquery没有看到新的HTML加载到对话框中
- 无法用新值重新加载JGrid