[英]Is there a way to pass parameter into Chrome Extension?
我们想使用合作伙伴网站上的内联安装来分发Chrome扩展程序。 我们想从扩展程序内部知道它是从哪个网站安装的。 有没有一种方法可以在安装过程中插入参数并在扩展中接收它? 提前致谢。
在chrome内联安装API中没有直接的方法可以执行此操作,但是有一种将其挂接的方法需要一些工作。
本质上,您需要两件事:
第一个很简单,它是chrome install API的一部分,只需对这里列出的install API使用successCallback函数。
现在您已经知道安装已经完成,现在将URL移到您的扩展程序有点麻烦了。 最简单的方法是将事件数据中带有URL的自定义javascript事件发送到节点(文档对此非常有用),然后在扩展名中,您可以在文档中侦听此自定义事件类型。 然后,在事件处理程序中,您将拥有URL。
但这是容易的部分。 棘手的部分是您的内容脚本不会在您刚刚安装的选项卡上。 如果您的扩展程序中具有随每个页面加载一起加载的内容脚本,则它们只会在安装后随每个页面加载一起加载。 这样您安装的页面? 在刷新页面之前,您不会让扩展程序监听该页面。
我可以想到许多解决方案,但没有一个是好的。 首先,如果在您的合作伙伴站点上他们不介意您搞砸URL,则可以添加带有标志(表明您的扩展程序已安装)的哈希(假设已经没有哈希)。 然后,您可以使用chrome扩展标签API来在当前活动窗口中找到当前活动标签的网址。 在扩展加载时读取该扩展,如果扩展名为“#extensionInstallId =“,则可以假定该扩展是刚刚从该URL安装并记录下来的。 这并不是万无一失的,因为如果该人将该选项卡保持打开状态,则当他们重新打开浏览器时,您将得到一个误报,并在只有一个事件时得到2个安装事件。 我想您甚至可以在扩展的localStorage中存储一个标志,并检查它是否真的是第一次安装。
二是做一些像这样 。 这很麻烦,因为它将创建一个新的弹出窗口(仅出于将此事件发送到您的扩展程序的目的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.