我应该从Chrome扩展项目中提取API数据的某个页面吗?

时间:2019-04-02 04:21:21

标签: google-chrome google-chrome-extension

我正在制作一个chrome扩展程序,该扩展程序从CoinMarketCap.com API中提取了JSON数据,目前正在后台脚本中运行它。我不确定100%该页面的目的是什么。我想知道是否可以在单击弹出窗口中的按钮后从弹出脚本中简单地获取数据吗?

每个按钮代表一个不同的硬币。我基本上想获得选定硬币的价格,并在用户双击文本文章中的硬币时将其显示在用户所在的任何页面上。最终,我想这样做,以便您可以双击任何硬币并在网页上显示实时价格转换。

2 个答案:

答案 0 :(得分:1)

背景页面的要点始终可用(如果persistent: true,则运行;如果persistent: false,则为已注册的事件唤醒/重新创建)。

弹出窗口的生存期由其可见性决定。用户单击并关闭页面时,页面即被关闭(就好像关闭了它的选项卡一样),因此它不再能够处理任何事件并且其状态丢失。

只要:

  1. 打开弹出窗口时,将接收/处理您需要提取的数据
  2. 在显示的弹出窗口之间需要保持的任何状态都可以存储在chrome.storage

然后,您不需要后台页面即可进行提取。弹出页面具有对Chrome API的相同级别的访问权限。

但是,请考虑以下情形:假设您希望打开弹出窗口后就可以准备好数据(至少,您希望它比“自上次以来”更新)。即使关闭弹出窗口以刷新数据,您也可能需要进行定期更新。您只能通过后台页面(例如chrome.alarms API)可靠地执行此操作。然后,您可以将最新的可用数据缓存在chrome.storage中,并在弹出窗口中使用它们。

背景页面用作某些代码,可以不管用户的操作如何定期运行,并能够始终对事件做出反应。

答案 1 :(得分:0)

根据Changes to Cross-Origin Requests in Chrome Extension Content Scripts,现在您必须在后台脚本中进行提取。不在内容脚本中。