0

面板脚本和页面脚本可以使全局变量相同吗?

可能是一些技巧,例如使用指针,或者可能是一些可以通过面板脚本和页面脚本轻松访问的存储位置。我不想通过使用端口通信发送消息来发送变量,因为我将在计时器函数中使用此变量,该函数以毫秒为间隔刷新,并且如果 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 浏览器会过载这么多请求,这比我能够将值保存在可以轻松从面板脚本中读取的位置中需要更多的资源。

4

1 回答 1

2

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

如果您提供了有关您的附加组件实际功能的更多信息,人们可能会提出更好的解决问题的方法。

于 2013-03-26T18:14:13.690 回答