gpt4 book ai didi

javascript - webpush,如果没有标签,如何打开窗口

转载 作者:行者123 更新时间:2023-11-29 10:08:37 24 4
gpt4 key购买 nike

我已经设置了一个网络推送系统,并且运行良好。

我遇到的问题是,在 Mac 上,如果用户打开了 Firefox,但在收到通知时没有打开任何页面,则点击丢失。我t 什么都不做。

这是相关的部分

self.addEventListener('push', function(event) {

var jsonObj = event.data.json();
var title = jsonObj.title;

event.waitUntil(
self.registration.showNotification(title, {
'body': jsonObj.body,
'icon': jsonObj.icon,
'href': jsonObj.href,
'tag': jsonObj.tag

}));

self.addEventListener('notificationclick', function(event) {
event.notification.close();
var href = jsonObj.href;
var tag = jsonObj.tag;

if (clients.openWindow) {
clients.openWindow(href);
}


/*
// This looks to see if the current is already open and
// focuses if it is
event.waitUntil(
clients.matchAll({
type: "window"
})
.then(function(clientList) {
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
if (client.url == href && 'focus' in client)
return client.focus();
}
if (clients.openWindow) {
return clients.openWindow(href);
}
})
);
*/
});

});

最佳答案

我建议你:

  1. 在全局范围内的 push 事件处理程序之外定义 notificationclick 事件处理程序。您可以在 showNotificationdata 参数中传递 jsonObj,这样您就可以在 event 中访问它> notificationclick 处理程序中的对象。您可以在此处查看示例:https://github.com/mozilla/wp-web-push/blob/master/wp-web-push/lib/js/sw.php .
  2. openWindow返回一个 Promise,您应该使用 openWindow 返回的 promise 调用 event.waitUntil。

关于javascript - webpush,如果没有标签,如何打开窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38198243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com