我正在构建一个Chrome扩展,为了让它以我想要的方式工作,我需要一个外部JavaScript脚本来检测用户是否安装了我的扩展。
例如:用户安装了我的插件,然后转到一个网站,上面有我的脚本。网站检测到我的扩展已安装,并相应地更新页面。
这个是可能的吗?
发布于 2012-12-06 07:21:59
我想我会分享我在这方面的研究。我需要能够检测是否为某些file:///链接安装了特定的扩展。我偶然看到了这篇文章,这篇文章解释了一种获取扩展manifest.json的方法。
我稍微调整了一下代码,并得出了以下结论:
function Ext_Detect_NotInstalled(ExtName, ExtID) {
console.log(ExtName + ' Not Installed');
if (divAnnounce.innerHTML != '')
divAnnounce.innerHTML = divAnnounce.innerHTML + "<BR>"
divAnnounce.innerHTML = divAnnounce.innerHTML + 'Page needs ' + ExtName + ' Extension -- to intall the LocalLinks extension click <a href="https://chrome.google.com/webstore/detail/locallinks/' + ExtID + '">here</a>';
}
function Ext_Detect_Installed(ExtName, ExtID) {
console.log(ExtName + ' Installed');
}
var Ext_Detect = function (ExtName, ExtID) {
var s = document.createElement('script');
s.onload = function () { Ext_Detect_Installed(ExtName, ExtID); };
s.onerror = function () { Ext_Detect_NotInstalled(ExtName, ExtID); };
s.src = 'chrome-extension://' + ExtID + '/manifest.json';
document.body.appendChild(s);
}
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if (is_chrome == true) {
window.onload = function () { Ext_Detect('LocalLinks', 'jllpkdkcdjndhggodimiphkghogcpida'); };
}
这样,您应该能够使用Ext_Detect(ExtensionName,ExtensionID)来检测安装了任意数量的扩展。
发布于 2012-02-17 00:52:20
如果你拥有这个网站,另一个可能的解决方案是使用inline installation。
if (chrome.app.isInstalled) {
// extension is installed.
}
我知道这是一个古老的问题,但这种方式是在Chrome15中引入的,所以我想我会把它列出来给现在正在寻找答案的人。
发布于 2015-02-13 01:59:18
我使用了cookie方法:
在我的manifest.js文件中,我包含了一个仅在我的站点上运行的内容脚本:
"content_scripts": [
{
"matches": [
"*://*.mysite.co/*"
],
"js": ["js/mysite.js"],
"run_at": "document_idle"
}
],
在我的js/mysite.js中有一行:
document.cookie = "extension_downloaded=True";
在我的index.html页面中,我寻找那个小甜饼。
if (document.cookie.indexOf('extension_downloaded') != -1){
document.getElementById('install-btn').style.display = 'none';
}
https://stackoverflow.com/questions/6293498
复制相似问题