我想检测用户浏览器中是否安装了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);
答案 0 :(得分:3)
我不确定您是要从网页还是已安装的扩展程序进行检查。
从网页
你做不到。只有Chrome网上应用店可以检查该内容。
但是如果您编写扩展程序和网页,您可以让您的扩展程序在您的页面中执行一些内容脚本以确认其已安装并正常工作。
来自扩展程序
如果您知道要查找的扩展程序ID,则可以使用
chrome.management.get(id, callback);
您可以使用chrome.management.getAll()获取已安装扩展程序的列表,其中包含的信息多于其ID。
答案 1 :(得分:3)
我知道这是一个老问题,但由于我设法解决了这个问题(根据我的需要),我想分享。
我通过在DOM中添加一些信息来实现这一目标。在扩展程序的content.js
文件中,我有:
document.documentElement.setAttribute('extension-installed', true);
在我的页面中:
var isInstalled = document.documentElement.getAttribute('extension-installed');
if (isInstalled) {
...
}
答案 2 :(得分:1)
假设您是该扩展程序的作者,您可以在extension.js
文件中加入CustomEvent,并在您的网站中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
。