如何在弹出页面和后台页面之间进行通信并存储我已经获得的信息?

时间:2016-03-08 07:18:49

标签: javascript jquery ajax google-chrome-extension

我正在制作Google Chrome扩展程序,以便为不同的网址(标签)提供特定信息(通过服务器端的ajax)。

我在chrome.tabs.onUpdated中使用chrome.tabs.onActivatedbackground.js事件侦听器来检测活动标签的网址是否已更改,然后发送ajax请求以使用{{1更改图标}}。 (是的,我想使用browser action代替page action,因为我想在弹出页面中显示扩展的一些总体信息,例如Adblock Plus确实如此)

然而,我无法弄清楚的是:

  1. 我如何在后台和弹出页面之间进行通信?我理解我应该使用chrome.browserAction.setIconchrome.tabs.sendMessage()在后​​台和内容脚本之间进行通信,但是如何在前者和弹出脚本之间进行通信?我无法看到我需要内容脚本来修改页面内容。
  2. 如何"存储"我已经获得的信息,在每个页面的弹出页面中,以便当用户更改激活的选项卡但不更改网址时,我不需要发送更多请求?
  3. 有什么想法吗?提前致谢!

1 个答案:

答案 0 :(得分:2)

对于问题#1,由于后台页面和弹出页面都在扩展过程中,它们可以直接相互通信,如设置变量或调用函数。您可以查看以下两篇文章:

关于问题#2,

  1. 在学习如何在弹出页面和背景页面之间进行通信之后,您可以将弹出页面中检索到的信息保存在后台页面中,并记住在persistent: true中设置manifest.json,它将确保后台页面贯穿整个延长生命。
  2. 您还可以使用chrome.storagelocalStorage api来存储数据。您可以将数据保存在一个页面中,并可以在另一个页面中自由访问(因此,这也是在两个页面之间进行某种程度的通信的方式)