Firefox 62.0.2(64位)。 Windows 7 x64。在我们网站的firebase-messaging-sw.js中从this编写代码:
self.addEventListener('notificationclick', event => {
event.waitUntil(async function() {
throw "1";//this line for debug only
}());
});
代码在Firefox上对event.waitUntil()引发异常“ InvalidStateError:试图使用一个不可用或不再可用的对象”。在Chrome中正常工作。为什么?我该如何解决?
P.S。我正在寻找第二天的答案。 :(
答案 0 :(得分:2)
在Firefox 63中出现了此问题。在Chrome中,一切正常。我的服务人员代码是:
importScripts('https://www.gstatic.com/firebasejs/5.5.6/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/5.5.6/firebase-messaging.js');
firebase.initializeApp({
'messagingSenderId': '...'
});
var messaging = firebase.messaging();
self.addEventListener('notificationclick', function (event) {
...
}
我不小心发现了这个:stopImmediatePropagation in firebase-messaging.js。 我将事件监听器移到了服务工作者的开头(在importScripts之前):
self.addEventListener('notificationclick', function (event) {
...
}
importScripts('https://www.gstatic.com/firebasejs/5.5.6/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/5.5.6/firebase-messaging.js');
处理程序开始在Firefox中工作。
P.S。处理程序开始工作正常,但是在执行此操作后,firebase消息库引发了错误。 event.stopImmediatePropagation()帮助:
self.addEventListener('notificationclick', function (event) {
event.stopImmediatePropagation();
...
}