首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查用户是否安装了Chrome扩展

检查用户是否安装了Chrome扩展
EN

Stack Overflow用户
提问于 2011-06-09 21:27:17
回答 11查看 120.8K关注 0票数 120

我正在构建一个Chrome扩展,为了让它以我想要的方式工作,我需要一个外部JavaScript脚本来检测用户是否安装了我的扩展。

例如:用户安装了我的插件,然后转到一个网站,上面有我的脚本。网站检测到我的扩展已安装,并相应地更新页面。

这个是可能的吗?

EN

回答 11

Stack Overflow用户

发布于 2012-12-06 07:21:59

我想我会分享我在这方面的研究。我需要能够检测是否为某些file:///链接安装了特定的扩展。我偶然看到了这篇文章,这篇文章解释了一种获取扩展manifest.json的方法。

我稍微调整了一下代码,并得出了以下结论:

代码语言:javascript
复制
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)来检测安装了任意数量的扩展。

票数 19
EN

Stack Overflow用户

发布于 2012-02-17 00:52:20

如果你拥有这个网站,另一个可能的解决方案是使用inline installation

代码语言:javascript
复制
if (chrome.app.isInstalled) {
  // extension is installed.
}

我知道这是一个古老的问题,但这种方式是在Chrome15中引入的,所以我想我会把它列出来给现在正在寻找答案的人。

票数 7
EN

Stack Overflow用户

发布于 2015-02-13 01:59:18

我使用了cookie方法:

在我的manifest.js文件中,我包含了一个仅在我的站点上运行的内容脚本:

代码语言:javascript
复制
 "content_scripts": [
        {
        "matches": [
            "*://*.mysite.co/*"
            ],
        "js": ["js/mysite.js"],
        "run_at": "document_idle"
        }
    ], 

在我的js/mysite.js中有一行:

代码语言:javascript
复制
document.cookie = "extension_downloaded=True";

在我的index.html页面中,我寻找那个小甜饼。

代码语言:javascript
复制
if (document.cookie.indexOf('extension_downloaded') != -1){
    document.getElementById('install-btn').style.display = 'none';
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6293498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档