Firefox addon 如何使Firefox扩展中的代码在计时器上执行
今天是我使用firefox扩展的第一天 基本上,我正在做一个扩展,它将在内部网络上用于检查web服务器的新通知 我使用mozilla页面上的向导创建了一个框架扩展,然后主要使用一些ajax代码编辑overlay.js 我正在使用“加载”事件侦听器为我的ajax调用调用setTimeout,然后使用setTimeout循环 问题似乎是在每个新的浏览器窗口上执行“加载”事件侦听器。我只想要一个全局计时器,让它工作 有什么想法吗 更新: 我发现: 这似乎是我想要的。问题是我不知道如何导入jsm文件。目录结构是什么 更新: 尝试此操作时: chrome.manifestFirefox addon 如何使Firefox扩展中的代码在计时器上执行,firefox-addon,Firefox Addon,今天是我使用firefox扩展的第一天 基本上,我正在做一个扩展,它将在内部网络上用于检查web服务器的新通知 我使用mozilla页面上的向导创建了一个框架扩展,然后主要使用一些ajax代码编辑overlay.js 我正在使用“加载”事件侦听器为我的ajax调用调用setTimeout,然后使用setTimeout循环 问题似乎是在每个新的浏览器窗口上执行“加载”事件侦听器。我只想要一个全局计时器,让它工作 有什么想法吗 更新: 我发现: 这似乎是我想要的。问题是我不知道如何导入jsm文件。目
content spt chrome/content/
skin spt classic/1.0 chrome/skin/
locale spt en-US chrome/locale/en-US/
overlay chrome://browser/content/browser.xul chrome://spt/content/ff-overlay.xul
style chrome://global/content/customizeToolbar.xul chrome://spt/skin/overlay.css
resource mycontent chrome/content/
chrome/content/overlay.js的前5行
try{
Components.utils.import("resource://spt/mycontent/ajax.jsm");
}catch(err){
alert(err);
}
try{
Components.utils.import("chrome://spt/content/ajax.jsm");
}catch(err){
alert(err);
}
我得到这个错误:
[异常…”组件返回故障代码:0x80040111(NS错误不可用)[NSExpcComponents_Utils.import]“nsresult:“0x80040111(NS错误不可用)”位置:“JS帧::chrome://spt/content/overlay.js 第2行“数据:否]
或者如果我从chrome.manifest中删除资源别名并在overlay.js的开头使用它
try{
Components.utils.import("resource://spt/mycontent/ajax.jsm");
}catch(err){
alert(err);
}
try{
Components.utils.import("chrome://spt/content/ajax.jsm");
}catch(err){
alert(err);
}
我得到这个错误:
[异常…”组件返回故障代码:0x80070057(NS错误非法值)[NSExpcComponents Utils.import]“nsresult:“0x80070057(NS错误非法值)”位置:“JS帧::chrome://spt/content/overlay.js ::第3行“数据:否”是,如果您有应在windows之间共享的代码(在加载新窗口时不应执行)并且不需要访问chrome,请使用 您可以通过以下方式导入模块:
Components.utils.import("resource://youraddon/your_module.jsm");
如果您在中设置资源
,例如,如果您添加
resource youraddon modules/
然后,必须将文件存储在/path/to/your/addon/modules/your_module.jsm
中
进一步说明:
- 代码模块不必具有文件扩展名
.jsm
。您可以将其保留为.js
。有时在某些编辑器(以及语法突出显示等)中效果更好 - Afaik您不能在模块中使用
,因为它无法访问setTimeout
对象。我建议使用窗口
资源mycontent chrome/content/
,那么URI将是resource://mycontent/ajax.jsm
。您不能在Firefox4之前使用chrome:
URI。@迈克:文件是否位于chrome/content/
下?是的,它就在ov旁边erlay.js,chrome/content/ajax.jsm