【问题标题】:Is there a way to pass parameter into Chrome Extension?有没有办法将参数传递给 Chrome 扩展程序?
【发布时间】:2016-03-28 17:39:39
【问题描述】:

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

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

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

    基本上你需要两件事:

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

    第一个很简单,并且是 chrome 安装 API 的一部分,只需将 successCallback 函数用于安装 API,如 here 所列。

    既然您有一个时间点知道安装已经发生,那么将 URL 传递到您的扩展程序有点令人费解。最简单的方法是将事件数据中带有 URL 的自定义 javascript 事件发送到节点(文档适用于此),然后在您的扩展程序中,您可以在文档上侦听此自定义事件类型。然后在事件处理程序中,您将获得 URL。

    但这是最容易的部分。棘手的部分是您的内容脚本不会出现在您刚刚安装的选项卡上。如果您的扩展程序中有内容脚本会在每次页面加载时加载,那么它们只会在安装之后在每个页面加载时加载。所以你安装的那个页面?在刷新之前,您不会让扩展程序监听该页面。

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

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

    【讨论】:

    • 另一种方法是使用历史 API 来查找最近访问过的合作伙伴网址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2016-08-26
    • 2011-01-15
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多