【问题标题】:Firefox Webextension - TypeError: browser.contextMenus is undefinedFirefox Webextension - TypeError:browser.contextMenus 未定义
【发布时间】:2023-03-15 17:33:01
【问题描述】:

我指的是https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/contextMenus/onClicked。 我已使用此示例中的代码在我的 background-script.js 中进行测试,但此代码似乎无法像许多其他 webextension 代码一样正常工作。

ma​​nifest.json

{
  "description": "Description ...",
  "manifest_version": 2,
  "name": "open-my-page",
  "version": "1.0",
  "homepage_url": "https://github.com/",
  "icons": {
    "48": "icons/page-48.png"
  },
  "background": {
    "scripts": ["background.js"]
  },
  "browser_action": {
    "default_icon": "icons/page-32.png"
  },
  "content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["/content-script.js"]
  }],
  "permission": [
    "activeTab",
    "contextMenus",
    "notifications",
    "tabs",
    "<all_urls>"
  ],
  "content_security_policy": "script-src 'self' https://api.github.com; object-src 'self'; img-src 'self'"
}

background-script.js

console.log('File: background.js');

browser.contextMenus.create({
  id: "click-me",
  title: "Click me!",
  contexts: ["all"]
});

browser.contextMenus.onClicked.addListener((info, tab) => {
  console.log("Item " + info.menuItemId + " clicked " +
              "in tab " + tab.id);
});

content-script.js

console.log('File: content-script.js');

结果:

TypeError: browser.contextMenus is undefined

我使用的是 Firefox 52.0.1。

有人出主意吗?

【问题讨论】:

  • 你试过chrome.contextMenus吗?那个有用吗?
  • edit 成为主题的问题:包括一个重复问题的minimal reproducible example。对于 Chrome 扩展程序或 Firefox WebExtensions,这几乎总是意味着包含您的 manifest.json 和一些背景、内容和/或弹出脚本/HTML。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定的问题或错误以及(3)重现它所需的最短代码在问题本身中。另请参阅:What topics can I ask about here?How to Ask
  • 尤其需要完整的 manifest.json。该问题可能是清单中其他问题的结果。在尝试复制时,我们需要对您的代码内容做出任何假设可能会使我们这样做的尝试无效。请在问题中包含足够的内容,以便我们可以将问题中的内容复制并粘贴到新目录中,在新配置文件中加载扩展并复制问题。最好是实际测试一下,以验证问题中是否有足够的重复内容。
  • @squgeim 虽然我使用 Firefox 并试图理解 webExtensions,但我在您提出问题后尝试过,但结果相同:TypeError: chrome.contextMenus is undefined.
  • @Makyen 好的,我已经添加了其他信息。

标签: javascript firefox-addon-webextensions


【解决方案1】:

在您的manifest.json 文件中,它应该是permissions 而不是permission

【讨论】:

  • 它对你有用吗?这是我在您的代码中发现的唯一问题。
  • 当我不小心在清单中定义了两次permissions 时遇到了类似的问题,但没有注意到它 m(
  • 很好的发现。我很高兴找到任何 WebExtension 信息/示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
相关资源
最近更新 更多