Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox addon 如何使Firefox扩展中的代码在计时器上执行_Firefox Addon - Fatal编程技术网

Firefox addon 如何使Firefox扩展中的代码在计时器上执行

Firefox addon 如何使Firefox扩展中的代码在计时器上执行,firefox-addon,Firefox Addon,今天是我使用firefox扩展的第一天 基本上,我正在做一个扩展,它将在内部网络上用于检查web服务器的新通知 我使用mozilla页面上的向导创建了一个框架扩展,然后主要使用一些ajax代码编辑overlay.js 我正在使用“加载”事件侦听器为我的ajax调用调用setTimeout,然后使用setTimeout循环 问题似乎是在每个新的浏览器窗口上执行“加载”事件侦听器。我只想要一个全局计时器,让它工作 有什么想法吗 更新: 我发现: 这似乎是我想要的。问题是我不知道如何导入jsm文件。目

今天是我使用firefox扩展的第一天

基本上,我正在做一个扩展,它将在内部网络上用于检查web服务器的新通知

我使用mozilla页面上的向导创建了一个框架扩展,然后主要使用一些ajax代码编辑overlay.js

我正在使用“加载”事件侦听器为我的ajax调用调用setTimeout,然后使用setTimeout循环

问题似乎是在每个新的浏览器窗口上执行“加载”事件侦听器。我只想要一个全局计时器,让它工作

有什么想法吗

更新:

我发现: 这似乎是我想要的。问题是我不知道如何导入jsm文件。目录结构是什么

更新:

尝试此操作时:

chrome.manifest

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
    ,因为它无法访问
    窗口
    对象。我建议使用

我更新了您找到的页面,试图让您关于注册代码模块的问题的答案更容易找到。现在更清楚了吗?是的,更清楚了,但我仍然无法让它工作。在尝试执行导入时,我收到错误:[异常…”组件返回故障代码:0x80070057(NS\u错误\u非法值)[NSExpcComponents_Utils.import]“nsresult:”0x80070057(NS_错误\u非法值)”位置:“JS帧::chrome://spt/content/overlay.js ::第3行“数据:否]我也收到此方法的错误。[异常…”组件返回失败代码:0x80040111(NS_error_NOT_AVAILABLE)[NSExpcComponents_Utils.import]”nsresult:“0x80040111(NS\u错误\u不可用)”位置:“JS帧::chrome://spt/content/overlay.js 第2行“数据:否]@迈克:请发布相关代码。否则我们无法帮助。@迈克:如果您有
资源mycontent chrome/content/
,那么URI将是
resource://mycontent/ajax.jsm
。您不能在Firefox4之前使用
chrome:
URI。@迈克:文件是否位于
chrome/content/
下?是的,它就在ov旁边erlay.js,chrome/content/ajax.jsm