从MDN我看到showNotification
会将应解析的承诺返回给NotificationEvent
。
语法
ServiceWorkerRegistration.showNotification(标题, [options])。then(function(NotificationEvent){...});
返回
解析为NotificationEvent的承诺。
但是我已将其设置为here,正在发送通知,但是如果您查看控制台,则会注意到event
未定义。
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
未定义,我不知道该怎么做。
我做错了吗?
答案 0 :(得分:1)
我不确定你抓住通知到底意味着什么? 如果您希望在用户点击通知时捕获事件,您可以通过添加监听器来完成。
添加退货。
return registration.showNotification('Laff', {
在notice上捕获事件点击:
self.addEventListener('notificationclick', function (event) {
var tag = event;
}
希望有所帮助
答案 1 :(得分:0)
实际上,文档中存在问题,showNotification
方法不会返回NotificationEvent
对象。
如果您不想等待点击,则可以使用getNotifications
方法。这是3秒后关闭通知的代码。
self.registration.showNotification(...).then(() => {
self.registration.getNotifications({tag: ...}).then(notifications => {
setTimeout(() => notifications[0].close(), 3000);
});
}
})
更多信息在这里:https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/getNotifications