【问题标题】:global variable between panel content script and page content script in firefox addonFirefox插件中面板内容脚本和页面内容脚本之间的全局变量
【发布时间】:2013-03-26 09:49:03
【问题描述】:

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

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

【问题讨论】:

  • 您只希望值显示吗?否则我只会在特定事件发生时获得价值。
  • @canuckistani 我需要获取价值并处理它。我可以检测到玩家是否在玩的事件,然后我想以毫秒为间隔获取玩家的位置,精度非常重要。
  • 我不知道该告诉你什么,这个系统不是为那种高频级别的消息而设计的,也不是让你直接从网页访问对象或值的形式通过参考的附加代码 - 有充分的理由。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多