我目前正试图这样做,所以我的扩展程序会在调用时显示通知。
单击图标时,background.js会在页面中执行脚本。这就是我的background.js文件的样子:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,{file: "buy.js"});
}
);
chrome.extension.onRequest.addListener(
function (request, sender, sendResponse) {
var notify = webkitNotifications.createNotification(
'face.png',
'Item Sniped!',
'Item sniper sniped an item!'
);
notify.show();
}
);
是的,我确实在manifest.json中设置了所有权限。我的清单文件:
{
"manifest_version": 2,
"name": "Sniper",
"version": "1.5",
"description": "Sniper",
"browser_action": {
"default_icon": "face.png",
"default_title": "Limited Sniper"
},
"background": { "scripts": ["background.js"] },
"permissions": [
"notifications",
"tabs",
"http://*/*"
]
}
我知道我需要在background.js文件中有一个监听器,但是甚至可以从buy.js(执行的脚本)向background.js发送请求以发出通知吗?
答案 0 :(得分:2)
是肯定的。内容脚本无法做某事。 see here
因此您必须向background.js发送请求以进行通知。 并且,如果您的通知有图标,请记住在您的manifest.json中注册它:
"web_accessible_resources":["face.png"]
但是,内容脚本有一些限制。他们不能:使用 chrome。* API(chrome.extension的部分除外)使用变量或 由其扩展名页面定义的函数使用变量或 由网页或其他内容脚本定义的函数