Javascript 通知面板打开时关闭/清除chrome扩展通知

Javascript 通知面板打开时关闭/清除chrome扩展通知,javascript,google-chrome,google-chrome-extension,notifications,Javascript,Google Chrome,Google Chrome Extension,Notifications,参考资料: 我正在使用chrome.notifications.create(字符串id、对象选项、函数回调);创建chrome通知 var id = 'list'; var options = {}; options.title = 'test'; options.iconUrl = 'notification_icon.png'; options.type = 'list'; options.message = "test"; options.buttons = [{title: 'tes

参考资料:

我正在使用chrome.notifications.create(字符串id、对象选项、函数回调);创建chrome通知

var id = 'list';

var options = {};
options.title = 'test';
options.iconUrl = 'notification_icon.png';
options.type = 'list';
options.message = "test";
options.buttons = [{title: 'test'}];
options.items = [{title: 'test', message:'test'}];

var createCallback = function(notificationId) { console.log(notificationId); };

chrome.notifications.create(id, options, createCallback); // returns 'list';
这将按预期创建通知。一切正常

然后调用chrome.notification.clear(字符串id,函数回调)

这确实会清除通知。一切正常

除非如果通知面板打开,则不会清除通知。99%的情况下,这不是一个大问题。直到我在通知中实现了按钮代码

var id = 'list';

var options = {};
options.title = 'test';
options.iconUrl = 'notification_icon.png';
options.type = 'list';
options.message = "test";
options.buttons = [{title: 'test'}];
options.items = [{title: 'test', message:'test'}];

var createCallback = function(notificationId) { console.log(notificationId); };

chrome.notifications.create(id, options, createCallback); // returns 'list';
使用chrome.notifications.onButtonClicked.addListener(函数回调);单击我调用清除通知面板代码,它会在清除后报告

var onButtonClickedCallback = function (notificationId, buttonIndex) {
    console.log(notificationId, buttonIndex);
    if ( notificationId == 'list' ) {
        chrome.notification.clear(id, clearCallback); // returns true;
    }
}
chrome.notifications.onButtonClicked.addListener(onButtonClickedCallback); // onClick it returns 'list', 0
但我正看着它。。一旦通知面板关闭并再次打开,我可以确认它已实际消失。但很明显,因为我点击了通知上的一个按钮,面板是打开的,但它并没有像我希望的那样消失

所有这些都是在扩展后台运行的,没有persistence:false属性(因此脚本总是被加载的,因为我可以看到输出,所以我知道函数正在被调用)

我忽略了什么吗?我没有看到任何处理关闭通知面板的功能。据我所知,我正在清除通知,但面板没有更新它的显示

我在Win8上使用Chrome37.0.2019.0金丝雀

如果有人能提出一些我可能错过的建议,我将不胜感激。我的谷歌搜索显示人们在HTML通知方面有问题。

这是一个,或者说是一个旧的设计决策,进展甚微

var id = 'list';

var options = {};
options.title = 'test';
options.iconUrl = 'notification_icon.png';
options.type = 'list';
options.message = "test";
options.buttons = [{title: 'test'}];
options.items = [{title: 'test', message:'test'}];

var createCallback = function(notificationId) { console.log(notificationId); };

chrome.notifications.create(id, options, createCallback); // returns 'list';

启动该问题以提高其优先级。我也有同样的问题。

以下是我已经使用了几个月的解决方案:

// open a window to take focus away from notification and there it will close automatically
function openTemporaryWindowToRemoveFocus() {
   var win = window.open("about:blank", "emptyWindow", "width=1, height=1, top=-500, left=-500");
   win.close();
}

chrome.notifications.clear("", function(wasCleared) {
    openTemporaryWindowToRemoveFocus()
});

谢谢,我不知道为什么我的google fu找不到这个。