Chrome扩展程序:点击通知后创建新标签页

gol*_*p04 4 javascript google-chrome google-chrome-extension

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"});
    });
}
Run Code Online (Sandbox Code Playgroud)

使用此功能,当我notify第一次触发并单击通知时,它会创建一个选项卡.当我第二次触发它并单击时,它会创建两个选项卡等.我应该如何重新组织我的代码以使其每次只创建一个选项卡?

Mét*_*ule 8

chrome.notifications.onClicked.addListener方法为您的扩展程序打开的每个通知添加一个onclick侦听器.每次调用此方法都会为所有这些方法添加另一个onclick侦听器:如果您调用该方法3次,则每个通知都会有3个单击侦听器,每个侦听器都会打开一个选项卡.

要修复代码,只需在notify函数之外添加click处理程序,只需添加一个onclick监听器即可.

注意:单击侦听器中指定的回调将传递实际单击的通知的通知ID,以便您可以在同时打开多个通知时区分通知.

通知id是第一个参数chrome.notifications.create.在这里,您总是通过"",因此您最多只能打开一个通知.