function notify(notifyMessage) {
var options = {
type: "basic",
title: "My Extension",
message: notifyMessage,
iconUrl: "hello.png"
};
chrome.notifications.create("", options, function(notificationId) {
setTimeout(function(){
chrome.notifications.clear(notificationId, function(){});
}, 2000);
});
chrome.notifications.onClicked.addListener(function(notificationId, byUser) {
chrome.tabs.create({url: "http://www.google.com"});
});
}
使用此功能,当我第一次触发notify
并单击通知时,它会创建一个选项卡。当我第二次触发它并单击时,它会创建两个选项卡,等等。我应该如何重新组织我的代码,使其每次只创建一个选项卡?
答案 0 :(得分:8)
chrome.notifications.onClicked.addListener
方法为扩展程序打开的通知的每个添加一个onclick监听器。每次调用此方法都会向所有中添加另一个onclick侦听器:如果您调用该方法3次,则每个通知都会有3个点击侦听器,每个侦听器都会打开一个选项卡。
要修复代码,您只需在notify函数之外添加click处理程序,只添加一个onclick监听器。
注意:点击侦听器中指定的回调将传递实际点击的通知的通知ID,以便您可以在同时打开多个通知时区分通知。
通知ID是chrome.notifications.create
的第一个参数。在这里,您始终会通过""
,因此您最多只能打开一个通知。