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

4
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”并单击通知时,它会创建一个标签页。当我第二次触发它并单击时,它会创建两个标签页等等。应该如何重新组织我的代码,使其每次只创建一个标签页?
1个回答

7
chrome.notifications.onClicked.addListener 方法会为你的扩展程序打开的每个通知添加一个点击监听器。每次调用该方法都会为所有通知添加另一个点击监听器。例如,如果你调用该方法 3 次,则你的每个通知都将有 3 个点击监听器,且每个监听器都会打开一个标签页。
要修复代码,你只需要在 notify 函数外添加 click 处理器,以添加一个 onclick 监听器即可。
注意:在单击监听器中指定的回调函数将传递实际单击通知的通知 id,因此如果同时打开多个通知,你可以区分它们。
通知 id 是 chrome.notifications.create 的第一个参数。在这里,你始终传递 "",因此你最多只能打开一个通知。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接