Chrome扩展程序 - 在视图和扩展程序之间共享数据

时间:2016-01-28 15:48:33

标签: javascript google-chrome-extension

我正在构建一个chrome扩展程序,以便在我的树莓派上运行一个链接(运行Kodi)。

到目前为止,它运作良好。我可以提供一个链接:

enter image description here

并在Kodi上进行了清理+流式传输。

我想让它更容易使用。

我没有将链接粘贴到应用程序中,而是创建了一个小脚本来搜索给定类型的页面,如果链接可以通过Realdebrid进行清理,那么脚本会添加一个按钮来直接传输它:

enter image description here

这里的问题是:
当用户点击按钮时,如何将链接传递给我的扩展程序?我希望在我的扩展中有它,因为我可以显示历史链接。

我尝试过类似的东西:

  • 从视图中看: enter image description here

  • 来自扩展程序的
  • enter image description here

但它没有用。

我想我应该使用messages,但我不明白如何。

您可以在Github找到开源项目。 由于它还没有工作,你以前找不到我在2张图片中共享的代码。它只是在我的电脑上,而不是推。

任何帮助都会非常感激!

谢谢!

编辑1:

当我点击页面中注入的按钮时,我收到此错误:
enter image description here

这导致了这一行: enter image description here

编辑2: enter image description here

如果我在点击按钮的同时打开应用程序,它就会正常工作。但我当然不想启动应用程序,目标只是单击按钮。

1 个答案:

答案 0 :(得分:2)

当您通过用户操作打开应用程序时加载

Popup script,即单击应用程序图标。在此之前,您无法使用它。因此,您收到此错误,因为当您发送请求时,侦听器应该可用,而在您的情况下,它不在那里。

现在,实现此目标的最简单方法是将请求从内容脚本发送到后台页面,即使应用程序未打开也可以使用该页面。

  1. 使用内容脚本注入按钮,并在按钮的点击事件中向背景页面(称为事件页面)发送消息。

  2. 在后台页面中添加一个事件监听器,该监听器将侦听内容脚本中的请求并将链接存储在本地存储中。

  3. 当您的应用打开时,只需从本地存储加载链接,并在历史记录中显示您的链接。

  4. 我希望这会有所帮助。