firefox插件中面板内容脚本和页面内容脚本之间的全局变量

时间:2013-03-26 09:49:03

标签: javascript firefox firefox-addon firefox-addon-sdk

可以为面板脚本和页面脚本创建一个全局变量吗?

也许有些黑客比如使用指针或者某些存储位置,可以通过面板脚本和页面脚本轻松访问。我不希望使用端口通信发送带有发布消息的变量,因为我将在一个计时器函数中使用此变量,该函数以英里秒的间隔刷新,如果它将使用系统端口发布这么多消息,则Web浏览器将被重载。我认为如果我能从一个位置读取变量会更好,这可以通过面板脚本和页面脚本轻松访问。我是firefox附加构建器的新手,我怎么能为我的插件实现这个呢?

这里我附加了面板脚本,它将读取用页面脚本保存的值。

var panel = require("panel").Panel({
          width: 100,
          height: 100,
          contentScriptFile: data.url("panel_script.js")
    });

这里我附加了页面脚本,它将从页面内容中保存一个值,面板脚本将读取它。

var pageMod = require("page-mod");
pageMod.PageMod({
    include: "*",
    contentScriptFile: self.data.url("page_script.js"),
    contentScriptWhen: 'ready'
  });

更新

我想要读取页面上正在播放的玩家位置,我需要它非常准确为里程数秒,我想在我的插件面板脚本中使用计时器来获取玩家位置值。如果我使用端口请求,那么Web浏览器会因为如此多的请求而过载,这比我只能将值保存在可以从面板脚本中轻松读取的位置那样占用更多资源。

1 个答案:

答案 0 :(得分:2)

您不能,这主要是出于安全和性能原因。内容脚本必须与main.js中的主要附加代码分开,以防止Web内容能够在main.js中注入和运行代码,并且可能访问所有Firefox apis,例如将文件写入文件系统,侦听tcp套接字并修改其他网页。

如果您提供了有关附加组件实际执行情况的更多信息,那么人们可能会建议更好地解决问题。