Javascript 服务人员通知承诺破裂?
从中可以看出,Javascript 服务人员通知承诺破裂?,javascript,notifications,service-worker,Javascript,Notifications,Service Worker,从中可以看出,showNotification返回一个承诺,该承诺应解析为NotificationEvent 语法 ServiceWorkerRegistration.showNotification(标题, 然后(函数(NotificationEvent){…}) 退换商品 决定通知事件的承诺 但是我已经设置好了,通知正在发送,但是如果您查看控制台,您会注意到事件未定义 navigator.serviceWorker.register('worker.js'); Notification.
showNotification
返回一个承诺,该承诺应解析为NotificationEvent
语法
ServiceWorkerRegistration.showNotification(标题,
然后(函数(NotificationEvent){…})
退换商品
决定通知事件的承诺
但是我已经设置好了,通知正在发送,但是如果您查看控制台,您会注意到事件
未定义
navigator.serviceWorker.register('worker.js');
Notification.requestPermission(function (result) {
if (result === 'granted') {
navigator.serviceWorker.ready.then(function (registration) {
registration.showNotification('Laff', {
body: 'Hello, you have unread mesages!',
icon: '/apple-touch-icon.png',
tag: 'test'
}).then(function(event){
console.log(event);
});
});
}
});
我需要得到一个通知,我想我可以从event.notification
获得通知,但是由于event
没有定义,我真的不知道该怎么做
我做错什么事了吗?我不知道你确切地说什么是要保留通知? 如果您希望在用户单击通知时捕获事件,可以通过添加侦听器来完成 添加返回
return registration.showNotification('Laff', {
在通知时捕获事件单击:
self.addEventListener('notificationclick', function (event) {
var tag = event;
}
希望有帮助确实文档中存在问题,
showNotification
方法不会返回NotificationEvent
对象
如果不想等待单击,可以使用getNotifications
方法。下面是一个代码,用于在3秒钟后关闭通知
self.registration.showNotification(...).then(() => {
self.registration.getNotifications({tag: ...}).then(notifications => {
setTimeout(() => notifications[0].close(), 3000);
});
}
})
更多信息请参见:您是否设法解决了此问题?我在promise resolve中遇到的相同事件仅为null。@Deatangel908请查看接受的答案,您可以侦听通知并单击。我不知道为什么这不符合文档要求。我需要通知对象,在我的特殊情况下,我想在超时前关闭通知。不确定文档有什么问题,或者当前规范有什么问题,但是您可以使用
self
获得所有显示通知的列表。在这个答案中,服务人员,不一定是显示通知的代码。也许你想更新你的答案,现在文档似乎已经更新了。showNotification方法返回解析为未定义的承诺。当做