首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome扩展开发:对扩展禁用的操作

Chrome扩展开发:对扩展禁用的操作
EN

Stack Overflow用户
提问于 2017-06-02 12:33:02
回答 2查看 2K关注 0票数 0

我想知道当用户禁用/删除扩展时是否有一个动作触发器。

可能采取的行动:显示html页面类型:“我们不想看到您离开,请查看我们的网站”。

这样的东西能起作用吗?

代码语言:javascript
复制
 chrome.browserAction.onClicked.addListener(function(tab) {   
     chrome.tabs.executeScript(null, {file: "myScript.js"}); 
});

使用"myScript.js“保存要在单击时执行的逻辑。

取自这个职位

编辑:还找到“在禁用或卸载扩展名时没有事件会触发”

onUninstalled事件(来自API文档)在这里可能帮不了我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-02 13:07:38

正如您在文档中看到的那样,browserAction.onClicked不能用于此任务。

由于扩展名中唯一能够禁用/删除它的部分是内容脚本,所以您可以声明一个内容脚本,该脚本定期尝试访问您的扩展,因此失败将指示该扩展被禁用。

下面是一个在所有打开的选项卡顶部显示DOM元素的示例:

manifest.json:

代码语言:javascript
复制
"content_scripts": [{
  "matches": ["<all_urls>"],
  "run_at": "document_start",
  "all_frames": true,
  "js": ["ping.js"]
}]

ping.js:

代码语言:javascript
复制
var pingTimer = setInterval(ping, 1000);

function ping() {
  var port = chrome.runtime.connect();
  if (port) {
    port.disconnect();
    return;
  }
  clearInterval(pingTimer);
  onDisabled();
}

function onDisabled() {
  document.body.insertAdjacentHTML('beforeend',
    '<div style="all:unset; position:fixed; left:0; top:0; right:0; height:2rem;' +
    ' background:blue; color:white; font: 1rem/2rem sans-serif; z-index:2147483647;">' +
    'We hate to see you go. Please check our website: ' +
    '<a style="all:inherit; color:cyan; display:inline; position:static;"' +
    ' href="http://example.com">http://example.com</a></div>');
}

备注:

  • 这将只在允许内容脚本注入的页面上工作。换句话说,除了浏览器内置的页面,如基于铬的浏览器中的chrome://设置,或者基于Firefox的浏览器中的插件、扩展/addon网站、其他扩展页面。
  • 使用您的站点打开一个新的选项卡将是个问题,因为内容脚本无法访问chrome.tabs API,而所有其他打开新选项卡的标准JavaScript方法都将被默认的弹出阻塞策略所阻止,而这个策略可以由用户手动修改。
  • 显然,在一个内容脚本中可用的几个chrome中,只有chrome.runtime幸存下来禁用了一个扩展。
  • 当您重新启用或重新加载您的扩展时,它的内容脚本不会自动返回到打开的选项卡中!您需要在后台/事件页脚本中使用chrome.tabs.query和chrome.tabs.executeScript手动执行此操作。在StackOverflow上搜索示例。
票数 4
EN

Stack Overflow用户

发布于 2017-11-03 06:44:39

嗨,你也可以用这个

代码语言:javascript
复制
chrome.runtime.setUninstallURL('http://myurl', function callback(id) {
        console.log("successfully uninstall");
    });
}
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44329086

复制
相关文章

相似问题

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