【问题标题】:Published extension doesn't work with chrome API listeners inside onInstalled已发布的扩展程序不适用于 onInstalled 中的 chrome API 侦听器
【发布时间】:2019-08-13 06:18:48
【问题描述】:

我刚刚测试了我的 Chrome 插件 https://chrome.google.com/webstore/detail/soft-screen/oecaicengbgemdbdklmajocogdjjgnda 在正式安装后,即通过 CWS(Chrome 网上应用店),但突然惊讶它无法正常工作。我一直通过以开发模式在本地安装它来使用它,即将安装并位于{The Chrome directory}\User Data\Default\Extensions\oecaicengbgemdbdklmajocogdjjgnda 的插件复制到另一个目录,然后通过将其拖到chrome://extension URL 重新安装它(在开发模式打开时)。然后我不得不从其manifest.json 中删除key,然后禁用通过CWS 安装的第一个。 我可以在本地开发者模式和 CWS 扩展之间切换扩展,以防止同时安装和启用两个冲突的相同扩展。

区别非常明显,它在使用 CWS(“添加到 Chrome”)安装时不起作用,但它只是在本地开发人员模式下工作。

你能不能像我一样帮助我,希望你比我更有知识,以便我能够修复错误并解决问题。

【问题讨论】:

  • 当你说它不工作时,你的意思是它没有被 chrome 加载,或者它没有按预期运行或执行操作?请提供有关您面临的错误的更多信息

标签: javascript google-chrome-extension


【解决方案1】:

这是一个常见问题:您使用的是非持久性后台脚本和 chrome.runtime.onInstalled 侦听器,您在其中注册了一些其他侦听器。

这是错误的,因为 onInstalled 事件仅在已发布扩展的安装/更新时触发,并且它异步发生,这是一个问题,因为chrome API 侦听器必须同步注册/em> 使用非持久性后台脚本时,否则唤醒后台脚本的事件将不会分派给此侦听器,即该事件将丢失。

它仅在开发人员模式下对您有用,因为 Chrome 将重新加载扩展程序视为 onInstalled 中报告的更新事件。或者您可能为您的后台脚本打开了开发工具,这会阻止它自动卸载。

TL;DR 解决方案:

将 chrome.browserAction.onClicked 注册移出 chrome.runtime.onInstalled:

chrome.runtime.onInstalled.addListener(function(info) {
  // code that should run on install/update
  // ...............
});

chrome.browserAction.onClicked.addListener(function(tab) {
  // code that should run on clicking the extension icon
  // ...............
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 2013-03-20
    • 2014-05-09
    • 1970-01-01
    • 2018-06-17
    相关资源
    最近更新 更多