Chrome 扩展程序:单击通知会打开多个选项卡

Posted

技术标签:

【中文标题】Chrome 扩展程序:单击通知会打开多个选项卡【英文标题】:Chrome extension: Clicking notification opens multiple tabs 【发布时间】:2017-11-27 18:49:26 【问题描述】:
chrome.runtime.onMessage.addListener(function(msg, sender) 

    var options = 
        type: "basic",
        title: msg.title,
        message: "Price: " + msg.price + "\nFinished ",
        iconUrl: "icon.png"
    ;

    chrome.notifications.create(options);

    chrome.notifications.onClicked.addListener(function() 
        chrome.tabs.create(url: "https://example.com/" + msg.link + "/a");
    );

);

当我第一次点击通知时,它会打开一个新标签。当我第二次单击通知时,它会打开两个新选项卡,依此类推。如何让通知只打开一个标签?

我查看了Chrome extension: Creating a new tab after clicking on the notification 并尝试执行建议(如下所示),但这会导致单击通知时没有任何反应。

chrome.runtime.onMessage.addListener(function(msg, sender) 

    var options = 
        type: "basic",
        title: msg.title,
        message: "Price: " + msg.price + "\nFinished ",
        iconUrl: "icon.png"
    ;

    chrome.notifications.create(options);

);

chrome.notifications.onClicked.addListener(function() 
    chrome.tabs.create(url: "https://example.com/" + msg.link + "/a");
);

【问题讨论】:

【参考方案1】:

您需要跟踪 notificationId 以及它应该指向哪个链接。例如:

var linkMap = ;  //outside the listener function

chrome.runtime.onMessage.addListener(function(msg, sender) 

    var options = 
        type: "basic",
        title: msg.title,
        message: "Price: " + msg.price + "\nFinished ",
        iconUrl: "icon.png"
    ;

    chrome.notifications.create(options, function (notifId)
        linkMap[notifId] = msg.link;
    );

);

chrome.notifications.onClicked.addListener(function(notifId) 
    chrome.tabs.create(url: "https://example.com/" + linkMap[notifId] + "/a");  //use it here.
);

【讨论】:

感谢您的回复。现在只打开一个通知,这很好,但链接似乎没有改变,所以一些通知转到错误的 url。 收到消息时链接会改变。如果您发布其余代码,我可以提供更多帮助。 您是否有电子邮件或其他信息,以便我将代码发送给您会更容易?我还注意到,如果我在message: 中包含currentLink;,它会发生变化,但是在任何通知打开的链接中,它们都会链接到最后一个通知。如果有帮助,会同时显示多个通知。 我认为问题是当3个通知同时出现时,currentLink每次都会更新。因此,当单击第一个通知时,currentLink 将链接到最后一个通知(在本例中为第三个)。如果你明白我的意思。 我刚刚更新了代码以跟踪各种通知中的链接。

以上是关于Chrome 扩展程序:单击通知会打开多个选项卡的主要内容,如果未能解决你的问题,请参考以下文章

单击工具栏图标时,在新选项卡中打开chrome扩展名

上传到 Chrome 应用商店后,扩展程序不会在新选项卡中打开多个链接

在 chrome 扩展中显示通知

Chrome 通知 - 即使在网站未打开时也能神奇推送

Chrome 扩展程序 - 在新打开的选项卡中不起作用

如何在 chrome 扩展程序中获取选项卡通知,以便扩展程序可以在每次新通知到达时显示桌面警报