我遇到了一个问题,即Notification.requestPermission
在我的ServiceWorker
处理程序中没有触发。
有趣的是,如果尝试从浏览器控制台使用Notification.requestPermission
,它可以正常工作,并且我可以在Chrome浏览器窗口顶部看到通知请求。
通过:Notification.requestPermission().then(res => console.log(res))
。但是,在ServiceWorker
文件中执行时,同样会抛出错误,例如:
Uncaught TypeError: self.Notification.requestPermission is not a function
那么,有人知道问题出在哪里吗?我已经看过SoW上的这些帖子:
但它们并没有解决我的问题...
我使用通知的SW push
代码部分:
self.addEventListener('push', function(event) {
console.log(self.Notification, Notification.requestPermission)
self.Notification.requestPermission().then(res => console.log(res))
if (Notification.permission === 'denied') {
console.log('Permission wasn\'t granted. Allow a retry.');
return;
}
if (Notification.permission === 'default') {
console.log('The permission request was dismissed.');
return;
}
console.log('The permission request is granted!');
try {
event.waitUntil(
self.registration.showNotification(event && event.data && event.data.text() || 'Some Notification Here!')
);
} catch (e) {
throw new Error(`Error in SW: ${e}`)
}
})