我是Chrome扩展程序开发的新手。我写了一个扩展程序,每次创建新选项卡时都会显示通知。它可以工作,但是如果我打开一个标签并立即打开另一个标签,通知将仅显示在第一个标签上。
在Chrome extension documentation我读到了这个:
一旦事件页面空闲了很短的时间(几秒钟),就会调度chrome.runtime.onSuspend事件。
显然它解释了为什么第二个标签没有通知。是否可以立即卸载事件页面(即一旦显示通知),而无需等待几秒钟?
这是我的代码:
的manifest.json
{
"name": "test",
"version": "1.0",
"description": "notification test",
"manifest_version": 2,
"permissions": [ "tabs", "notifications" ],
"background": { "scripts": ["background.js"], "persistent": false }
}
background.js
var notification = webkitNotifications.createNotification(
'48.png',
'hello',
'this is a test'
);
chrome.tabs.onCreated.addListener(function(tab) {
notification.show();
});
答案 0 :(得分:0)
代码a)
的的manifest.json 强> 的
{
"name": "test",
"version": "1.0",
"description": "notification test",
"manifest_version": 2,
"permissions": [ "tabs", "notifications" ],
"background": { "scripts": ["background.js"], "persistent": false },
"web_accessible_resources": [
"48.png"
]
}
的 background.js 强> 的
function notify(tab){
console.log(tab);
var notification = webkitNotifications.createNotification(
'48.png',
'hello',
'this is a test'
);
notification.show();
}
chrome.tabs.onCreated.addListener(notify);
在此解决方案中,如果由于https://code.google.com/p/chromium/issues/detail?id=162543第一次/紧接在另一个标签之后创建新标签,您将看到两个通知。但是在这里你被事件页面而不是背景页面所震撼。
代码b)
通过将活动页面设置为背景页面,您可以获得所需的功能;但是,如果您特别关注它,则不使用事件页面。
的的manifest.json 强> 的
{
"name": "test",
"version": "1.0",
"description": "notification test",
"manifest_version": 2,
"permissions": [ "tabs", "notifications" ],
"background": { "scripts": ["background.js"], "persistent": true },
"web_accessible_resources": [
"48.png"
]
}
的 background.js 强> 的
function notify(tab){
console.log(tab);
var notification = webkitNotifications.createNotification(
'48.png',
'hello',
'this is a test'
);
notification.show();
}
chrome.tabs.onCreated.addListener(notify);