我正在编写一个Chrome扩展,当我点击浏览器操作图标时,它会将我重定向到一个URL。
我试着使用:
chrome.browserAction.onClicked.addListener
但我得到了
未捕获TypeError:无法读取未定义的属性“”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"); });
发布于 2012-07-16 02:19:19
代码似乎在您的twterland.js
文件中,这是您的内容脚本。browserAction
只能在扩展页面中使用,因此不能在内容脚本中使用。
文档:https://developer.chrome.com/extensions/content_scripts
但是,内容脚本有一些限制。他们无法通:
-使用chrome。*API(除了chrome.extension的一部分)
-使用由其扩展页面定义的变量或函数
-使用由网页或其他内容脚本定义的变量或函数
把它放在background page上。
发布于 2016-07-13 04:18:16
对于那些已经添加了如下内容的用户
"background": {
"scripts": ["background.js"]
}
并且仍然得到Cannot read property 'onClicked' of undefined
--只需添加
"browser_action": {}
进入你的manifest.json
编辑:感谢@Pacerier的评论,我已经更改了我的答案
发布于 2017-02-22 05:52:38
如果您的manifest.json
中没有定义"browser_action"
属性,则可能会发生此错误。@Kirill的答案是有效的,但你也必须添加一个空白的icon.png
文件,否则chrome会抛出一个错误,说它找不到这样的文件。
将此代码添加到manifest.json
文件中应该会显示以下错误:
"browser_action": {}
请务必阅读有关如何使用"browser_action"
设置的documentation for further reference。
https://stackoverflow.com/questions/11494232
复制相似问题