谷歌浏览器扩展程序:用户点击后关闭通知

3
Chrome扩展程序运行良好。我的问题是通知在7秒钟后关闭。我希望用户点击关闭通知。
function engine(){
    var latestId;
    var ids;
    var messages = [];
    var newmessage = [];

    $.get('http://localhost/site/json.php',function (data){
        var json = $.parseJSON(data);
        messages = json;
        ids = json[0].id;
        if(latestId == ids){
            //no update
        }else if(latestId === undefined){
            var run = {
                type: "basic",
                title: "Title",
                message: "Some message",
                iconUrl : "icon.png",
            };

            chrome.notifications.create(run);
        }    
    });
}

不确定您的问题是什么。您是希望通知在单击后关闭,还是希望在7秒后不隐藏并仅在用户交互时关闭? - Xan
4个回答

3

首先创建您的通知,并给它一个 notificationID 参数,以便稍后关闭它。

var notification = {
    type:"basic",
    title:"News From Us!",
    message:"Google Chrome Updated to v50!",
    iconUrl:"assets/images/icon.png"
};
chrome.notifications.create("notfyId",notification);

在通知被点击时,您可以使用其 ID(即“notfyId”)关闭通知。

function forwardNotfy(){
    chrome.notifications.clear("notfyId");
    window.open(url); //optional
 }

 chrome.notifications.onClicked.addListener(forwardNotfy);

现在,当您点击通知时,它将关闭。

window.location不起作用,但是window.open可以。 - Wasim A.
谢谢你的提示! - Nezih

1
你可以使用 notification.close();:
setTimeout(function() {
    notification.close();
}, 2000);

演示:

// request permission on page load
document.addEventListener('DOMContentLoaded', function () {
  if (Notification.permission !== "granted")
    Notification.requestPermission();
});

function notifyMe() {
  if (!Notification) {
    alert('Desktop notifications not available in your browser. Try Chromium.'); 
    return;
  }

  if (Notification.permission !== "granted")
    Notification.requestPermission();
  else {
    var notification = new Notification('Notification title', {
      icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
      body: "Hey there! You've been notified!x",
    });

    notification.onclick = function () {
      window.open("https://dev59.com/dm025IYBdhLWcg3wSkAq#13328397");      
    };
    
    setTimeout(function() {
    notification.close();
}, 2000);
  }

}
<button onclick="notifyMe()">
  Notify me!
</button>

JSBin演示

1
notification.cancel不是一个函数,在控制台中写入?您能否在此处编写示例代码? - user3811744
@Arokiyanathan:请[编辑]您的答案,并将链接放入其中。另外,请尽量详细和清晰地回答问题。参见:[答案] - Remi Guan

1

该功能目前仅在 beta 渠道中实现,而不是最新版本的 Chrome。有关详细信息,请参见此处

当它被实现时,您将能够使用requireInteraction:True,如下所示:

var run = {
    type: "basic",
    title: "Title",
    message: "Some message",
    iconUrl : "icon.png",
    requireInteraction : True,
}

实现这个。


0

notification.close() 用于关闭任何通知。

有关更多信息,请参见以下代码-

创建通知:

var notification = new Notification('OnlineOfferPrice', {
    icon: 'icon.png',
    body: "Test Message",
});

如果你想在通知点击时执行操作,请使用以下代码。在你的业务逻辑之后,它会自动关闭。
notification.onclick = function () { 
    //write your business logic here.
    notification.close();
};

如果通知没有被点击,且您想在6秒后自动关闭它-
setTimeout(function() { notification.close(); }, 6000);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接