在Chrome通知中打开网址

Gab*_*iel 1 javascript notifications google-chrome google-chrome-extension

对不起,如果我的问题含糊不清,但这是我基本上要做的事情.我的Chrome扩展程序应用程序基本上会查看论坛,每当发布新主题时,都会显示桌面通知.它使用Chrome通知API.因此它看起来像这样:

chrome.notifications.create("id0",选项,回调)

选项是模板,所以我可以做类似的事情:

var options = {
  type: "basic",
  title: "NEW THREAD!",
  message: "I made a new thread blah blah blah",
  iconUrl: "url_to_small_icon"
}
Run Code Online (Sandbox Code Playgroud)

因此,当用户单击通知时,它应该打开该线程的链接.

问题是我应该怎么做?

起初,我想我应该只在选项模板下添加url(类似options.message ="www.google.com"),然后一旦调用chrome.notifications.onClicked.addListener,我会从选项中获取该链接,但我不认为这工作,因为我不能抢在通知本身比其他notificationID任何信息(在这种情况下,这将是"ID0").(如果我错了,请告诉我一种方法来做到这一点.谢谢!)

我想到的一种方法是拥有我的chrome扩展应用程序找到的新线程的URL数组(假设已经发布了3个新线程),然后一旦调用chrome.notifications.onClicked.addListener,我会检查通知id(在本例中为id0),然后使用索引(在本例中为0)查找数组的值,然后打开该URL.这确实有效,但我需要在某些时候删除该元素,因为我们看到更多新线程时我的数组会增加.

问题是,如果我在点击通知后立即删除该元素,我移动数组(数组大小为3,但现在它有2),当用户点击另一个通知时,(让我们说通知' id1'),这将打开一个没有正确URL的元素(它应该打开数组(0),而不是数组(1),因为我删除了第一个元素).

注意用户可以按任何顺序单击id0,id1或id2,因此如果显示通知,则无法删除通知中的元素.

我可以尝试做的一件事是在点击所有通知后删除数组,但是我不喜欢这种方法....

我确信有更好的方法所以我希望你们能帮助我吗?

Chrome通知,例如:https://developer.chrome.com/extensions/richNotifications chrome.notifications API:https://developer.chrome.com/apps/notifications

abr*_*ham 10

使用论坛URL作为notificationId,您根本不必使用数组.

例如:

var forumUrl = 'https://example.com/thread/42';
var options = {
  type: "basic",
  title: "NEW THREAD!",
  message: "I made a new thread blah blah blah",
  iconUrl: "url_to_small_icon"
}

// create notification using forumUrl as id
chrome.notifications.create(forumUrl, options, function(notificationId){ }); 

// create a on Click listener for notifications
chrome.notifications.onClicked.addListener(function(notificationId) {
  chrome.tabs.create({url: notificationId});
});  
Run Code Online (Sandbox Code Playgroud)