在chrome扩展中调用notify函数时,打开不同的页面?

时间:2014-09-06 23:21:21

标签: javascript jquery google-chrome-extension

在我的代码中,我希望每次都能使用不同的链接调用函数notify,并且创建的特定通知会在单击时打开包含该页面的新选项卡 注意:我对文档非常困惑,请不要只是链接我,我真的想要一个例子的解释。感谢

这是我到目前为止所做的:

function notify(title, msg, link, callback) {
    //no idea what to do with the link here
    var options = {
        title: title,
        message: msg,
        type: "basic", 
        iconUrl: "Icon.png" 
    };
    return chrome.notifications.create("", options, callback);
}

并调用该函数:

notify("title", "message", "http://www.example.com", function(notification) { });

将显示

标题 消息

点击后,会打开一个新标签到http://www.example.com

然后,我会再次打电话给它 notify("title", "message", "http://www.google.com", function(notification) { });

单击

时会打开http://www.google.com的新标签页

谢谢,如果你能提供帮助!

1 个答案:

答案 0 :(得分:1)

没有直接支持将onclick处理程序附加到通知。相反,如果您点击通知的正文,则会生成一般的chrome.notification.onClicked事件,并提供通知的ID。

因此,您将维护自己的ID与URL的匹配。

var urls = {};

chrome.notifications.onClicked.addListener(notifyClick);
chrome.notifications.onClosed.addListener(notifyClose);

function notify(title, msg, link, callback) {
  var options = {
    title: title,
    message: msg,
    type: "basic", 
    iconUrl: "Icon.png",
    isClickable: true // New in Chrome 32, alters the appearance?
  };
  return chrome.notifications.create("", options, function(id) {
    // New ID will be generated
    urls[id] = link;
  });
}

function notifyClick(id) {
  // Look up the URL:
  chrome.tabs.create({url: urls[id]});
  // Optionally, close the notification:
  // chrome.notifications.clear(id, function(){});
}

function notifyClose(id, byUser) {
  // Clean up the matching
  delete urls[id];
}

请注意:关于以编程方式关闭通知有一个警告。如果通知已从消息中心关闭it will not immediately disappear