javascript - 火狐。InvalidStateError:尝试使用不可用或不再可用的对象
问题描述
火狐 62.0.2(64 位)。视窗 7 x64。在我们网站的firebase-messaging-sw.js 中编写代码:
self.addEventListener('notificationclick', event => {
event.waitUntil(async function() {
throw "1";//this line for debug only
}());
});
代码在 Firefox 中的 event.waitUntil() 上引发异常“InvalidStateError:尝试使用不可用或不再可用的对象”。在 Chrome 中正常工作。为什么?我该如何解决?
PS我正在寻找第二天的答案。:(
解决方案
在 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) {
...
}
我不小心发现了这个:firebase-messaging.js 中的 stopImmediatePropagation。我在我的 service-worker 的开头(在 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 中工作。
PS Handler 开始正常工作,但在此操作之后,firebase-messaging 库引发了错误。event.stopImmediatePropagation() 帮助:
self.addEventListener('notificationclick', function (event) {
event.stopImmediatePropagation();
...
}
推荐阅读
- python - 制作 bash 文件以显示到终端
- c# - 当我只是尝试从网格视图中获取单元格的值时,我收到有关日期时间的错误
- bash - 在 perl 脚本中捕获 bash 输出值
- r - 列表中的行长度不同
- javascript - 如何在 JavaSript 中对对象进行排序
- python-3.x - 使用 tkinter 从另一个函数中的 1 个函数更新一个按钮
- javascript - Routify - 放置不打算用作路由的组件的目录是什么?
- node.js - Oauth 2 (Passport.js) 登录应该永远不会失败,对吧?
- angular - 标头上的 Set-Cookie 尚未设置 Cookie
- python - 在kivy中设置动态类