Javascript 检测是否安装了Chrome扩展

Javascript 检测是否安装了Chrome扩展,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我想检测用户浏览器中是否安装了Chrome扩展。如果没有,我想显示一个链接来安装扩展。如果已经安装,我想隐藏链接 这似乎是一个可能的解决方案,但我很困惑连接上的某个对象发送应该是什么? 我不确定是否要从网页或已安装的扩展进行检查 从网页上下载 你不能。只有Chrome网络商店可以检查这一点 但是,如果您编写扩展和网页,您可以让您的扩展在页面中执行一些内容脚本,以确认其安装和工作 来自分机 如果您知道要查找的扩展id,则可以使用 chrome.management.get(id, callbac

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

这似乎是一个可能的解决方案,但我很困惑连接上的某个对象发送应该是什么?


我不确定是否要从网页或已安装的扩展进行检查

从网页上下载

你不能。只有Chrome网络商店可以检查这一点

但是,如果您编写扩展和网页,您可以让您的扩展在页面中执行一些内容脚本,以确认其安装和工作

来自分机

如果您知道要查找的扩展id,则可以使用

chrome.management.get(id, callback);
您可以使用chrome.management.getAll()获取已安装扩展的列表,其中包含的信息多于它们的id


假设您是扩展名的作者,您可以在
扩展名.js
文件中包含一个,并且在您的站点中,您可以
向该事件添加一个事件列表

在您的分机内:

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

我知道这是一个老问题,但由于我设法解决了这个问题(出于我的需要),我想与大家分享

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

document.documentElement.setAttribute('extension-installed', true);
在我的页面中:

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

if (isInstalled) {
    ...
}

对不起,这个问题还是要问的。你引用的答案已经过时了:这种方法已经不存在了。请检查BJury的答案,以获得最新和更完整的版本。@简单您能解决这个问题吗?你能分享一下你的解决方案吗?我认为
chrome.management
在javascriptit's not work并返回此错误:
无法读取未定义的属性get
而且我在清单中有管理权限。看来浏览器没有识别chrome.management,或者可能是您拼写错误。请参考Hello@Leo Tavares,在这里您可以找到一个关于如何在SO上设置答案格式的指南:。谢谢,@AlejandroMontilla(Y)不客气!!不知何故,这是迄今为止提供的最简单的解决方案!:D又好又干净。谢谢分享。
var isInstalled = document.documentElement.getAttribute('extension-installed');

if (isInstalled) {
    ...
}