为什么 chrome.browserAction.onClicked 未定义?

新手上路,请多包涵

我正在编写一个 Chrome 扩展程序,它会在单击浏览器操作图标时将我重定向到一个 URL。

我正在尝试使用:

 chrome.browserAction.onClicked.addListener

但我明白了

未捕获的类型错误:无法读取未定义的属性“onClicked”

这是我的清单文件:

 {
    "name": "first extension",
    "version": "2.2.12",
    "description": "redirct to a link icon",
    "browser_action": {
        "default_icon": "icontest.png",
        "default_title": "Do action"
    },
    "permissions": ["tabs", "http://*/*"],
    "content_scripts": [{
        "matches": ["http://*.twitter.com/*", "https://*.twitter.com/*"],
        "js": ["twterland.js"]
    }],
    "icons": {
        "16": "icontest.png",
        "48": "icontest.png",
        "128": "icontest.png"
    }
}

这是我的 js 文件:

 chrome.browserAction.onClicked.addListener(function(tab) { alert("hi"); });

原文由 Alon Mahl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

代码似乎在您的 twterland.js 文件中,这是您的内容脚本。 browserAction 只能在扩展页面中使用,因此不能在内容脚本中使用。

文档: https ://developer.chrome.com/extensions/content_scripts

但是,内容脚本有一些限制。 他们不能

  • 使用 chrome.* API (chrome.extension 部分除外)

- 使用由其扩展页面定义的变量或函数

- 使用网页或其他内容脚本定义的变量或函数

而是将其放在 背景页面 上。

原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 3.0 许可协议

经典清单V2

对于那些已经添加了类似内容的人

"background": {
    "scripts": ["background.js"]
}

仍然得到 Cannot read property 'onClicked' of undefined - 只需添加

"browser_action": {}

进入你的 manifest.json

清单V3

manifest.json:使用 action 而不是 browser_action ,另请参阅 迁移指南

 "background": {"service_worker": "background.js"}
"action": {}

background.js:使用 chrome.action 而不是 chrome.browserAction

原文由 Kirill Oficerov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏