Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Javascript 我们是否可以由服务人员在这两者之间重新呈现页面_Javascript_Service Worker - Fatal编程技术网

Javascript 我们是否可以由服务人员在这两者之间重新呈现页面

Javascript 我们是否可以由服务人员在这两者之间重新呈现页面,javascript,service-worker,Javascript,Service Worker,在我的web应用程序中,我创建了一个脱机html页面,并编写了一个服务人员,就像如果网络关闭,它应该返回所有请求的脱机页面一样。若在脱机状态下触发任何请求,服务工作者将返回脱机html页面作为响应。但是脱机html不会显示在页面中。如果我刷新页面脱机html页面。这是因为,在刷新页面时获取原始html页面时,sw标识notwork不在那里,因此返回脱机页面 self.addEventListener('fetch',(事件)=>{ event.respondWith((异步()=>{ 试一试{

在我的web应用程序中,我创建了一个脱机html页面,并编写了一个服务人员,就像如果网络关闭,它应该返回所有请求的脱机页面一样。若在脱机状态下触发任何请求,服务工作者将返回脱机html页面作为响应。但是脱机html不会显示在页面中。如果我刷新页面脱机html页面。这是因为,在刷新页面时获取原始html页面时,sw标识notwork不在那里,因此返回脱机页面

self.addEventListener('fetch',(事件)=>{
event.respondWith((异步()=>{
试一试{
const networkResponse=等待获取(event.request);
返回网络响应;
}捕获(错误){
log('获取失败;返回脱机页面',错误);
常量缓存=等待缓存。打开(缓存名称);
const cachedResponse=等待cache.match(脱机URL);
返回缓存响应;
}
})());
})

是否有任何方法可以在不刷新页面的情况下显示脱机页面。也就是说,一旦我转到脱机状态并触发任何请求,我想删除旧的html页面并显示脱机页面。

我不认为服务人员可以这样做,因为它一起在单独的线程中运行,甚至不像主线程那样访问窗口/文档对象。您可以做的是,检测应用程序中的用户是否在线/离线,然后可以呈现离线HTML。 所有主要浏览器现在都支持
navigator.onLine
boolean,或者您甚至可以附加事件侦听器来检测更改,并编写逻辑来显示脱机HTML

window.addEventListener('online', () => {...})
window.addEventListener('offline', () => {...})

有关浏览器支持的详细信息:

您能否共享获取事件处理程序代码以显示脱机页面功能?我是从这个链接中引用的-感谢您的帮助@kanishk Anand。这对我有帮助。我还有一个疑问,我们能否从service worker刷新当前页面(即不使用主线程)?或者能够由service worker使用另一个html在service worker中重新绘制整个页面(不使用主线程)?否@LiterallyNone。请考虑服务人员充当页面和服务器之间的拦截器。它不能直接影响页面,但充当助手。对于任何与DOM相关的更改,都需要将该逻辑合并到主应用程序中。