javascript - Chrome 扩展 : Creating a new tab after clicking on the notification

标签 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"});
    });
}

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

最佳答案

chrome.notifications.onClicked.addListener 方法向您的扩展程序打开的每个 通知添加一个 onclick 监听器。每次调用此方法都会向它们所有添加另一个 onclick 监听器:如果您调用该方法 3 次,您的通知将分别有 3 个点击监听器,每个都会打开一个选项卡。

要修复您的代码,您只需在通知函数之外添加点击处理程序,只添加一个 onclick 监听器。

注意:点击监听器中指定的回调会传递实际点击的通知的通知id,这样可以区分同时打开多个通知。

通知id是chrome.notifications.create的第一个参数。在这里,您始终传递 "",因此您将始终最多打开一个通知。

关于javascript - Chrome 扩展 : Creating a new tab after clicking on the notification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24313371/

相关文章:

javascript - 回调函数 promise ajax

javascript - 如何禁用 jQuery.tablesorter 中的列排序?

css - 单击选择菜单(下拉菜单)时自定义字体不呈现

javascript - 关于 chrome.tabs.executeScript,返回多个值

javascript - 无法让 Bootstrap 3 JavaScript 工作

javascript - 根据 slider 值显示和隐藏元素

javascript - Chrome 并不总是使用 JavaScript setInterval() 重复事件

css - 预加载的媒体查询 CSS 不适用于 Chrome 中的调整大小

google-chrome-extension - 迁移 Chrome 扩展 v3 通知

javascript - 未捕获的类型错误 : Cannot read properties of undefined (reading 'onClicked' )