我试图从内容脚本中显示一个简单的桌面通知代码,但它似乎不起作用..我已经在maifest.json文件中添加了权限。从内容脚本中显示它们是否有限制?
答案 0 :(得分:9)
您无法直接通过内容脚本显示通知。 但是,您可以通过后台页面显示它们。
你manifest.js应该是这样的:
{
"name": "Notify This",
"version": "0.1",
"permissions": [
"notifications"
],
"background_page": "background.html",
"content_scripts": [
{
"matches": ["http://www.example.com/*"],
"js": ["contentscript.js"]
}
]
}
然后使用chrome.extension.sendRequest():
// in your contentscript.js
chrome.extension.sendRequest({msg: "Sup?"}, function(response) { // optional callback - gets response
console.log(response.returnMsg);
});
在接收端你应该有一个onRequest听众:
// in your background.html
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
// Create a simple text notification:
var notify = webkitNotifications.createNotification(
'48.png', // icon url - can be relative
'Hello!', // notification title
request.msg // notification body text
);
notify.show();
setTimeout(function(){ notify.cancel(); },5000);
sendResponse({returnMsg: "All good!"}); // optional response
});
答案 1 :(得分:2)
是的,通知使用特定于Chrome的API,而内容脚本仅适用于一般的javascript等... background page是所有特定于Chrome的API都可以运行的地方......首先,您需要在manifest.json文件中注册您的背景页面 - 如下所示:
"background_page": "background.html",
同样在清单文件中,允许所需的权限:
"permissions": [ "notifications" ],
然后,后台页面中的脚本应如下所示:
<script>
setTimeout("setNotification();",1);
function setNotification(){
var n
if (window.webkitNotifications.checkPermission() != 0){
setNotification();
return false;
}
n = window.webkitNotifications.createHTMLNotification('http://www.your-notification-address.com');
n.show();}
</script>