我正在尝试创建一个快速的Chrome扩展程序(完全初学者),只想在点击图标时显示警告,所以我尝试了以下操作:
的manifest.json
{
"name": "Something",
"version": "1.0",
"manifest_version": 2,
"description": "Woohoo",
"browser_action": {
"default_icon": "icon.png"
},
"content_scripts" : [{
"matches": ["<all_urls>"],
"js" : ["bgscript.js"]
}]
}
bgscript.js
chrome.browserAction.onClicked.addListener(function(tab) {
alert('icon clicked')
});
然而,当我点击我的图标时,没有任何反应!看看上面的内容 - 有人能说出为什么这不起作用吗?
答案 0 :(得分:3)
要获得浏览器操作onClicked
事件的通知,您需要 background-page (或者更好 event-page ),而不是 content-script
像这样改变你的清单:
// Replace that:
"content_scripts" : [{...}]
// with this:
"background": {
"persistent": false,
"scripts": ["bgscript.js"]
}
如果您希望浏览器操作在内容脚本上调用某些内容,则需要使用 Message Passing 在后台页面进行通信(例如 {{3} } 强>)。
E.g:
<强>的manifest.json 强>
{
"name": "Something",
"version": "1.0",
"manifest_version": 2,
"description": "Woohoo",
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"content_scripts" : [{
"matches": ["<all_urls>"],
"js" : ["content.js"]
}]
}
<强> background.js 强>
chrome.browserAction.onClicked.addListener(function (tab) {
/* Send a message to the active tab's content script */
chrome.tabs.sendMessage(tab.id, { action: 'saySomething' });
});
<强> content.js 强>
chrome.runtime.onMessage.addListener(function (msg) {
/* We received a message, let's do as instructed */
if (msg.action === 'saySomething') {
alert('something');
}
});