检测是否安装了 Chrome 扩展程序

Detect if a Chrome extension is installed

本文关键字:扩展 程序 Chrome 是否 安装 检测      更新时间:2023-09-26

我想检测用户的浏览器中是否安装了Chrome扩展程序。如果没有,我想显示一个链接来安装扩展。如果已经安装了,我想隐藏链接。

这似乎是一个可能的解决方案,但我some_object_to_send_on_connect应该是什么感到困惑?https://developer.chrome.com/extensions/extension#global-events

var myPort=chrome.extension.connect('jllpkdkcdjndhggodimiphkghogcpida', some_object_to_send_on_connect);
我知道

这是一个老问题,但由于我设法解决了这个问题(出于我的需求),我想分享一下。

我通过在 DOM 中添加一些信息来实现这一点。在扩展名的content.js文件中,我有:

document.documentElement.setAttribute('extension-installed', true);

在我的页面中:

var isInstalled = document.documentElement.getAttribute('extension-installed');
if (isInstalled) {
    ...
}

我不确定您是要从网页还是从已安装的扩展程序进行检查。

从网页

你不能。 只有Chrome网上应用店可以检查这一点。

但是,如果您编写扩展和网页,则可以使扩展在页面中执行一些内容脚本,以确认其已安装并正常工作。

从扩展

只要您知道要查找的扩展程序的 ID,您就可以使用

chrome.management.get(id, callback);

您可以使用chrome.management.getAll()获取已安装扩展的列表,其中包含比其ID更多的信息。

https://developer.chrome.com/extensions/management

假设您是扩展的作者,则可以在extension.js文件中包含一个自定义事件,并且在您的站点中,您可以addEventListener该事件。

在扩展中:

const customEvent = new CustomEvent('myExtensionCheckEvent', {
    detail: true // whatever value you enter here will be passed in the event
})
document.dispatchEvent(customEvent)

和你的网站 JavaScript 文件:

document.addEventListener('myExtensionCheckEvent', e => {
    if (e.detail) {
        // the extension is installed
    }
})

请注意,必须调用密钥detail