Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 兼容时如何启用react service worker?_Reactjs - Fatal编程技术网

Reactjs 兼容时如何启用react service worker?

Reactjs 兼容时如何启用react service worker?,reactjs,Reactjs,我一直在使用React JS服务人员,它可以帮助用户更快地加载内容。但我也收到了一些用户的投诉,他们有旧手机(安卓7.0、安卓5.0等),他们在访问时看到一个空白/陈旧的页面。我意识到服务人员的兼容性可能没有我想象的那么好。在打开service worker之前,似乎不可能添加自定义兼容性检查 在注册service worker之前,是否有方法在浏览器中检查对service worker的支持?您可以有条件地在浏览器中检查service worker支持,并相应地注册service worker

我一直在使用React JS服务人员,它可以帮助用户更快地加载内容。但我也收到了一些用户的投诉,他们有旧手机(安卓7.0、安卓5.0等),他们在访问时看到一个空白/陈旧的页面。我意识到服务人员的兼容性可能没有我想象的那么好。在打开service worker之前,似乎不可能添加自定义兼容性检查


在注册service worker之前,是否有方法在浏览器中检查对service worker的支持?

您可以有条件地在浏览器中检查service worker支持,并相应地注册service worker:

if ('serviceWorker' in navigator) {
  serviceWorker.register();
}
为了使事情防弹,您甚至可以检查
ServiceWorker
对象是否存在

if ('serviceWorker' in navigator && !!ServiceWorker) {
  serviceWorker.register();
}

让我知道我的答案是否适用于您。谢谢,另外一个问题是
serviceWorker.unregister()
做什么?是否需要向注销serviceWorker添加
else
语句?我的假设是,这里的serviceWorker是一个react功能,它与
navigator不同。serviceWorker
@AeroWang您可以注册或注销service Worker,两者都需要API处于活动状态。我明白了。因此,我认为更好的做法是在不兼容时不注册(而不是取消注册)。因此,既然导航器中的
process.env.NODE\u env==='production'&&&serviceWorker'已经在serviceWorker.js中,我是否注册也不重要,但似乎一旦注册,我的应用程序就会崩溃,为什么?@AeroWang这很奇怪。这不应该发生。给我一点时间,我要在我的虚拟机上试试这个东西。我很快会给你回复的。