Javascript webpush,如果没有选项卡,如何打开窗口
我已经建立了一个网络推送系统,它工作得相当好 我的问题是,在Mac上,如果用户打开了Firefox,但在收到通知时没有打开任何页面,那么点击就会丢失。 我 他什么都不做 这是相关部分Javascript webpush,如果没有选项卡,如何打开窗口,javascript,firefox,service-worker,web-push,Javascript,Firefox,Service Worker,Web Push,我已经建立了一个网络推送系统,它工作得相当好 我的问题是,在Mac上,如果用户打开了Firefox,但在收到通知时没有打开任何页面,那么点击就会丢失。 我 他什么都不做 这是相关部分 self.addEventListener('push', function(event) { var jsonObj = event.data.json(); var title = jsonObj.title; event.waitUntil( self.registration.sho
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);
}
})
);
*/
});
});
self.addEventListener('push',函数(事件){
var jsonObj=event.data.json();
var title=jsonObj.title;
event.waitill(
自我注册。展示通知(标题{
“body”:jsonObj.body,
“icon”:jsonObj.icon,
“href”:jsonObj.href,
“tag”:jsonObj.tag
}));
self.addEventListener('notificationclick',函数(事件){
event.notification.close();
var href=jsonObj.href;
var tag=jsonObj.tag;
if(clients.openWindow){
clients.openWindow(href);
}
/*
//这将查看电流是否已打开,并且
//如果是的话
event.waitill(
客户。匹配球({
类型:“窗口”
})
.then(函数(客户端列表){
对于(var i=0;i
我建议您:
通知在全局范围内的推送
事件处理程序之外单击事件处理程序。您可以在showNotification
的data
参数中传递jsonObj
,这样您就可以在notificationclick
处理程序的事件
对象中访问它。您可以在此处看到一个示例:
谢谢,我将进行一些测试并发布结果。它似乎可以按预期工作,但如果浏览器没有任何窗口,它将无法打开窗口:(Firefox中当前存在一个bug,当没有打开窗口时,该bug会阻止它工作()。