Django-webpush:您的浏览器 (Firefox) 不支持 Service Worker
Django-webpush: Service worker is not supported in your browser (Firefox)
我正在使用 Django-Webpush 在非安全连接上推送通知(我 运行 它在本地网络中)。我按照说明进行操作,它在 Chrome 上完美运行,但在 Firefox(版本 84.0 - 支持服务工作者)中,我收到消息说 服务工作者在您的浏览器中不受支持!.
我检查了其他有 service workers 的网站,它们似乎工作正常。我运行浏览器的所有加载项都停用了,但问题仍然存在。
我还 运行 禁用了所有附加组件的浏览器,以查看是否有任何东西阻止它,但没有成功。
为了得到我的浏览器不支持 service worker 的消息,以下条件应该在 webpush.js 中失败:
if('serviceWorker' in navigator) {
var serviceWorker = document.querySelector('meta[name="service-worker-js"]').content;
navigator.serviceWorker.register(serviceWorker).then(function(reg){subBtn.textContent = 'Loading...';
registration = reg;
initialiseState(reg);
});
} else {
messageBox.textContent = 'Service Worker is not supported in your Browser!';
messageBox.style.display = 'block';
}
还有什么要检查的吗?
显然是因为 webapp 在 http 而不是 https 上 运行 的小细节,它需要对我的 Firefox about:config 进行以下更改:
由假切换为真:
- alerts.useSystemBackend
- devtools.serviceWorkers.testing.enabled
不幸的是,它不会在 Windows 10 通知区域中保留通知超过几秒(~ 5 秒)。
我仍然需要它保留在那里,直到用户点击它。
编辑:
[献给那些卡在解决推送通知不卡在操作中心的同一个阶段的人]
这个问题其实是Firefox存在多年的bug。他们已将 TTL 硬编码为 4 秒,但尚未为用户提供以任何方式或形式更改此设置的方法。
我认为问题已解决,从现在开始可能需要继续 Chrome。
我正在使用 Django-Webpush 在非安全连接上推送通知(我 运行 它在本地网络中)。我按照说明进行操作,它在 Chrome 上完美运行,但在 Firefox(版本 84.0 - 支持服务工作者)中,我收到消息说 服务工作者在您的浏览器中不受支持!.
我检查了其他有 service workers 的网站,它们似乎工作正常。我运行浏览器的所有加载项都停用了,但问题仍然存在。
我还 运行 禁用了所有附加组件的浏览器,以查看是否有任何东西阻止它,但没有成功。
为了得到我的浏览器不支持 service worker 的消息,以下条件应该在 webpush.js 中失败:
if('serviceWorker' in navigator) {
var serviceWorker = document.querySelector('meta[name="service-worker-js"]').content;
navigator.serviceWorker.register(serviceWorker).then(function(reg){subBtn.textContent = 'Loading...';
registration = reg;
initialiseState(reg);
});
} else {
messageBox.textContent = 'Service Worker is not supported in your Browser!';
messageBox.style.display = 'block';
}
还有什么要检查的吗?
显然是因为 webapp 在 http 而不是 https 上 运行 的小细节,它需要对我的 Firefox about:config 进行以下更改:
由假切换为真:
- alerts.useSystemBackend
- devtools.serviceWorkers.testing.enabled
不幸的是,它不会在 Windows 10 通知区域中保留通知超过几秒(~ 5 秒)。
我仍然需要它保留在那里,直到用户点击它。
编辑: [献给那些卡在解决推送通知不卡在操作中心的同一个阶段的人] 这个问题其实是Firefox存在多年的bug。他们已将 TTL 硬编码为 4 秒,但尚未为用户提供以任何方式或形式更改此设置的方法。
我认为问题已解决,从现在开始可能需要继续 Chrome。