2016-03-28 226 views
0

我们希望通过我们合作伙伴网站的内嵌安装来发布我们的Chrome扩展程序。而且我们希望从扩展程序内部知道它是从哪个网站安装的。 有没有一种方法可以在安装过程中插入参数并在扩展中接收它? 在此先感谢。有没有办法将参数传递给Chrome扩展?

回答

1

在Chrome内联安装API中没有直接的方法来完成它,但是有一种方法可以将它连接起来,这需要一点点修改。

从本质上讲,你需要两件事情:

  1. 知道,当一个浏览器扩展程序安装已 成功完成您的分机上的合作伙伴网站的能力。
  2. 一个机制,从合作伙伴的网站,发送消息到您的chrome 扩展名。

第一个很容易,也是chrome安装API的一部分,只需使用successCallback函数安装API,如here所列。

既然您已经知道发生了安装的时间点,那么将URL放到您的扩展中就会有些复杂。最简单的方法是将事件数据中的URL发送到一个自定义JavaScript事件到节点(文档可以正常工作),然后在扩展中,您可以在文档上侦听此自定义事件类型。然后在事件处理程序中,您将拥有该URL。

但这是很容易的部分。棘手的部分是你的内容脚本不会在你刚安装的标签上。如果您的扩展程序中有内容脚本随每次页面加载而加载,则只会在安装之后加载每个页面加载。那么你从那里安装的页面?在刷新它之前,您将无法获得该页面的扩展。

我可以为此考虑一些解决方案,而且它们都不是很好。首先,如果在你的合作网站上,他们不介意你使用URL搞砸,你可以添加一个散列(假设没有散列),并带有一个标志,表示你的扩展刚安装好。然后,您可以使用Chrome扩展标签API来查找当前活动窗口中当前活动选项卡的URL。阅读你的扩展的负载,如果它有一个说“#extensionInstallId =”,那么你可以认为这个扩展只是从该URL安装并记录下来。这并非万无一失,因为如果用户离开该选项卡时,当他们重新打开浏览器时,您将得到误报,并在只有一个安装事件时收到2个安装事件。我想你甚至可以在localStorage中为扩展存储一个标志,并检查它是否真的是第一次安装。

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

+0

另一种方式可能是使用历史api来查找最近访问的合作伙伴网址。 –

相关问题