有没有办法将参数传递到Chrome扩展程序?

时间:2016-03-28 17:39:39

标签: google-chrome google-chrome-extension

我们希望使用合作伙伴的内联安装来分发我们的Chrome扩展程序'网站。我们想从扩展内部了解它所安装的网站。 有没有办法在安装过程中插入一个参数并在扩展中接收它? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

在Chrome内联安装API中没有直接的方法可以做到这一点,但有一种方法可以将它连接起来,这需要一些小工作。

基本上你需要两件事:

  1. 了解Chrome扩展程序安装的时间 已成功完成您在合作伙伴网站上的扩展程序。
  2. 来自合作伙伴网站的机制,用于向您的Chrome发送消息 扩展。
  3. 第一个是简单的并且是chrome install API的一部分,只需使用successCallback函数到列出的here安装API。

    现在您已经知道安装已经发生的时间点,将URL转移到您的扩展程序有点令人费解。最简单的方法是将带有事件数据中的URL的自定义javascript事件发送到节点(文档可以正常工作),然后在扩展中,您可以在文档上侦听此自定义事件类型。然后在事件处理程序中,您将拥有该URL。

    但这很容易。棘手的部分是您的内容脚本不会出现在您刚刚安装的选项卡上。如果扩展程序中的内容脚本加载了每个页面加载,则只会在>安装后加载每个页面加载。那么您安装的页面是什么?在刷新之前,您无法获得该页面的扩展程序。

    我可以为此考虑许多解决方案,但它们都不是很好。 首先,如果在您的合作伙伴网站上,他们不介意您使用网址,您可以添加一个哈希(假设已经没有哈希),并带有一个标志,表示您的扩展程序刚刚安装完毕。然后,您可以使用chrome扩展选项卡API在当前活动窗口中查找当前活动选项卡的URL。在加载扩展时读取它,如果它有#34; #extensionInstallId =",那么你可以假设这个扩展刚刚从该URL安装并记录它。这并非万无一失,因为如果该人员打开该选项卡,当他们重新打开浏览器时,您会得到误报并在只有一个时获得2个安装事件。我想你甚至可以在localStorage中为扩展名存储一个标志,并检查它是否真的首次安装。

    其次是做this之类的事情。这很麻烦,因为它会创建一个新的弹出窗口(仅用于将此事件发送到您的扩展程序)。