繁体   English   中英

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

[英]Is there a way to pass parameter into Chrome Extension?

我们想使用合作伙伴网站上的内联安装来分发Chrome扩展程序。 我们想从扩展程序内部知道它是从哪个网站安装的。 有没有一种方法可以在安装过程中插入参数并在扩展中接收它? 提前致谢。

在chrome内联安装API中没有直接的方法可以执行此操作,但是有一种将其挂接的方法需要一些工作。

本质上,您需要两件事:

  1. 知道何时在合作伙伴站点上为您的扩展成功完成chrome扩展安装的功能。
  2. 来自合作伙伴网站的一种机制,用于向chrome扩展程序发送消息。

第一个很简单,它是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM