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 扩展程序:单击通知会打开多个选项卡的主要内容,如果未能解决你的问题,请参考以下文章