问题标签 [service-worker-events]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 离线页面的渲染在实时服务器上不起作用
我尝试在我的服务人员上渲染一个离线页面,它在我的本地主机上运行良好,但显然它在我的实时服务器上不起作用,我没有收到任何错误
在实时服务器上,不呈现离线页面,而是呈现当前请求
javascript - 注册服务工作者失败 - React
Service Worker 注册失败,出现以下异常。
Failed to register ServiceWorker. The origin of the provider scriptURL('https://dev.xyz.cdn.com') does not match the current origin ('https://dev.xyz.com').
目前所有资产都部署在 CDN 中。因此域与脚本源 url 不匹配。如何解决这个问题?
service-worker - 如果用户手动删除 cookie,则清除 service worker 缓存
我目前正在使用 Workbox 来使用 Service Worker 完成一些缓存。现在,当用户注销时,我面临着从缓存中删除更多个性化数据的问题。我们已经通过在注销操作时向 SW 发布消息来实现这一点。但是,我在处理用户删除 cookie 的边缘情况时遇到了麻烦。由于我们如何进行身份验证,用户在 cookie 删除时会被注销。但是我们无法检测到此删除,因此无法清除缓存。
关于如何处理边缘情况或更好地处理 SW/Workbox 中经过身份验证的资产的任何建议?谢谢!
下面是我们当前流程的一个简短示例。
service-worker - 如何在网络推送中添加再次提醒我的操作?
在显示我的网络推送通知时,我在我的选项中添加了一个操作,以便用户可以要求在 30 分钟内再次收到通知。
然后我在服务人员中处理操作:
如果只有一种方法可以重新发出推送事件。
上面代码的问题是它不会在 30 分钟后显示通知,但是如果我将超时设置为 1 分钟,它就可以正常工作。
我认为 Chrome 忽略event.waitUntill
并杀死了setTimeout
.
是什么原因造成的,我该如何解决?
javascript - 如何在服务工作者中缓存之前修改响应正文?
我认为这会相当简单,但我很难成功发送响应,然后修改我的克隆响应,该响应存储在我的服务工作者内部的缓存中。
最终,我想将我的缓存数据附加到获取的时间和日期。我正在使用我的服务人员首先从网络中获取这些数据,如果它不可用,则回退到缓存中。
这是我的服务人员的代码
service-worker - 浏览器关闭时如何唤醒服务人员
我在玩服务人员的东西。我已经做到了以及清单 json。我想在以下情况后触发服务人员启动:
添加了推送集成并从服务器端发送推送通知。在客户端收到它,但前提是我在我的应用程序页面中。
以下是我想尝试启动服务工作者的步骤:
- 我第一次打开网页
- Service - Worker 已安装
- 我完全关闭浏览器
- 我重新打开浏览器
- 现在我需要触发 Service -Worker start - How ?
我想知道我可以使用什么或者我需要在我的 service worker js 或 manifest json 中添加什么以使这种情况成为可能。
javascript - 窗口加载成功后的 postMessage
我正在尝试实现以下功能
用户打开一个page 1
有一个button
. 单击button
另一个窗口打开但在该程序之前检查窗口是否已经打开,如果它已经打开,则重新打开现有窗口或打开新窗口。
在打开一个窗口时,我正在使用postMessage
.
现在,问题是当我打开一个窗口时(如果它尚未打开),有时窗口无法接收 postMessage 发送的消息,因此我在以下代码中使用了 setTimeout。
但是,这不是一个可靠的解决方案,所以我需要一种在新打开的窗口中每次都接收消息的方法。
以下是代码service worker
javascript - 检查用户是否与 Service Worker 重新联机
有没有办法检测用户是否使用服务人员连接回网络/在线?
当用户回到网络时,我想获取一些数据。
它可能在 fetch 事件处理程序中完成,但我更喜欢不那么 hacky 的解决方案。
我想出了hacky解决方案的伪代码:
javascript - Service Worker 根据某些条件运行事件 waitUntil()
我正在尝试cache-then-network
在服务工作者中实施一种策略,该策略在后台更新缓存。我想避免不必要fetch
的请求,所以想出了以下解决方案 -
该update
函数通过使用网络获取请求来更新缓存。问题是该updated
变量始终为假,导致该update
函数每次都运行。
我对服务人员不太熟悉,代码基本上是从多个来源拼接而成的。所以欢迎替代/更好的解决方案。我的最终目标是首先缓存,在后台从网络获取,并设置一个标志来告知内容是否已更改。
service-worker - JavaScript 离线 serviceworker 示例是如何工作的?
https://googlechrome.github.io/samples/service-worker/basic/上的页面 包含您开始使用现代离线网页所需的所有脚本。在我偶然发现它之前,我花了很多徒劳的时间研究这个主题。突然间,我一直在阅读的所有内容开始变得有意义。HTML5 再次给我留下了深刻的印象,因为它是一个极好的开发系统。
它有一小段脚本需要在你的主页上运行,它有一个完整的服务工作者脚本,当你在线时会从你的服务器获取文件——或者当你离线时从缓存中获取它们。
我花了不到一个小时就让它工作了。注意您可以在本地主机上使用 http 对其进行测试。任何其他服务器都需要 https 连接。Google 和 Firefox 调试器不显示 serviceworker 的来源。
从一开始就很清楚,serviceworker 示例中展示的功能非常接近我的应用程序所需的功能,但我认为我发现了一个错误。
激活处理程序应该负责清理旧缓存。这是脚本 - 从页面逐字逐句。
简而言之,它不是删除旧缓存。我认为它在执行过滤器以确定不需要哪些缓存之前尝试删除缓存。
我是一位经验丰富的程序员,但这个片段让我害怕。对于生产应用程序来说,它非常简短,但如果您正在调试它,则很难阅读。如果作者以更详细的方式编写它会很好,以便更多的开发人员能够理解发生了什么。
它是如何工作的?