Javascript 为什么chrome.browserAction.onClicked未定义?
我正在编写一个Chrome扩展,当点击浏览器操作图标时,它会将我重定向到一个URL 我正在尝试使用:Javascript 为什么chrome.browserAction.onClicked未定义?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在编写一个Chrome扩展,当点击浏览器操作图标时,它会将我重定向到一个URL 我正在尝试使用: chrome.browserAction.onClicked.addListener 但我明白了 未捕获的TypeError:无法读取未定义的属性“onClicked” 这是我的清单文件: { "name": "first extension", "version": "2.2.12", "description": "redirct to a link icon",
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"); });
代码似乎在您的
twterland.js
文件中,该文件是您的内容脚本<代码>浏览操作只能在扩展页中使用,因此不能在内容脚本中使用
文件:
但是,内容脚本有一些限制他们不能:-使用chrome.*API(chrome.extension部分除外)
-使用由其扩展页定义的变量或函数
-使用由网页或其他内容脚本定义的变量或函数
把它放在屏幕上。对于那些已经添加了类似
"background": {
"scripts": ["background.js"]
}
仍然无法读取未定义的属性“onClicked”-只需添加
"browser_action": {}
输入manifest.json
编辑:
感谢@Pacerier的评论,我已经更改了我的答案如果您的
清单.json
中没有定义“browser\u action”
属性,则可能会发生此错误@Kirill的答案是可行的,但你也必须添加一个空白的图标.png
文件,否则chrome会抛出一个错误,它找不到这样的文件
将其添加到manifest.json
文件应会抑制以下错误:
"browser_action": {}
请务必阅读关于如何使用
“browser\u action”
设置的说明。
"persistent": true
我在manifest.json中的后台声明解决了这个问题。确保manifest.json中后台的脚本数组中没有在background.js之前有jquery.js
"background": {
"scripts": ["background.js","jquery.js"]
}
请注意,您只能提起清单中的
app
、browser\u action
、page\u actions
中的一项.json文件
例如,要使用,您应该在清单中有
browser\u action
字段.json。如果您使用的是manifest\u版本3,则可能会出现相同的问题。
在这种情况下
- “background.scripts”应替换为“background.service\u worker”
- “浏览器操作”应替换为“操作”
- 在js代码中,chrome.browserAction应替换为chrome.action
详细信息可以在这里找到:这实际上是我的问题。我的剧本已经是背景了。只是我从来没有声明过任何
browser\u action
。“browser\u action”:{}
足够了为什么?????????这毫无意义。。。我将图标更改为另一个文件,但它无法执行。我把它改回icon.png,一切都很好!谢谢,但我真的抓狂了…页面操作也一样我在清单中定义了浏览器操作,仍然chrome.pageAction
未在我的背景中定义script@AlexanderMills最初的问题是关于chrome.browserAction
,所以我不确定pageAction
。我还必须删除并重新安装扩展。虽然这“解决”了这个问题,显然有很多理由不让持久化:true
,所以这不是一个理想的解决方案。