问题标签 [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.

0 投票
2 回答
80 浏览

service-worker - Service Worker 是否支持在线活动?

document.ononline是浏览器中可用的事件。是否有服务工作者代码支持的等效事件,它没有 DOM 访问权限?

我看到的所有示例代码都会在处理请求的过程中检查网络状态。为了将本地更新提交到服务器或云,最好立即响应网络可用性。

我能找到的最好的文档是https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope,它只列出了这些事件:

  • 激活
  • 上取
  • 安装时
  • 留言
  • onnotificationclick
  • onnotificationclose
  • 上推
  • onpushsubscriptionchange
  • 同步

其中,sync 似乎最像我所寻求的,但它取决于 SyncManager 的使用,并且它的文档充满了反对在生产代码中使用的警告。

0 投票
1 回答
407 浏览

javascript - 添加到主屏幕不起作用

我的网站托管在 https 上。它有一个 manifest.json 文件、service-worker.js 和 SW 注册码。但我没有看到来自手机的添加到主屏幕弹出窗口。为什么?这是 index.html 文件:

现场演示

0 投票
1 回答
1118 浏览

javascript - 如何跟踪服务工作者中的当前 URL 更改?

我想在我的 PWA 中跟踪用户的活动。是否可以使用当前 URI 在每次网站展示时向我的服务器发送请求?

场景:用户使用当前 URI 打开 PWA -> 请求。用户打开子页面 -> 使用当前 URI 发送请求。

我的示例 service-worker.js:

0 投票
1 回答
1492 浏览

javascript - 如何在 Firefox 中启动 Service Worker?

我正在尝试学习如何制作 Service Worker,虽然它在 Chrome 中按预期工作,但由于某种未知原因,它在 Firefox v56 中不起作用。这是应该在任何地方都可以使用的演示https://mdn.github.io/sw-test/

这是演示服务工作者代码

当我打开开发者控制台时,我得到这个错误: "Registration failed with TypeError: ServiceWorker script at https://mdn.github.io/sw-test/sw.js for scope https://mdn.github.io/sw-test/ encountered an error during installation."

同时,同样的代码在 Chrome 中也能正常工作。

about:config设置dom.serviceWorkers.enabled中设置为true。我还禁用了所有插件,但它仍然无法正常工作。

可能是什么问题呢?

0 投票
2 回答
4375 浏览

javascript - 服务工作者错误:事件已响应

我不断收到此错误:

未捕获(承诺中)DOMException:无法在“FetchEvent”上执行“respondWith”:该事件已得到响应。

我知道如果 fetch 函数中发生异步操作,服务人员会自动响应,但我无法确定这段代码中的哪一位是违规者:

任何帮助,将不胜感激。

0 投票
1 回答
144 浏览

javascript - 在前端检测 Service Worker 激活

是否有可能在不使用间隔方法的情况下检测前端新服务人员的激活(而不是安装!)?

0 投票
1 回答
1452 浏览

javascript - 为什么服务人员离线模式不起作用

我正在尝试为该应用程序提供离线访问。但是代码不起作用。

正在创建缓存并存储所有文件,但是当我在离线模式下重新加载页面时,只加载数据,没有应用任何样式。

镀铬版本:版本 61.0.3163.100

// 应用程序.js

// 服务工作者 js

0 投票
1 回答
1399 浏览

service-worker - 如何使用工作箱服务工作者工具允许 cookie 和处理 302 重定向?

我有一个基于 SSR 的反应应用程序,目前正在实施 Workbox 工具,用于预缓存和离线功能。我遇到问题主要是因为该站点依赖于服务器端的 cookie 并基于这些发出重定向。

  • 初始加载工作正常,但是一旦服务工作者(sw)在线并且另一次刷新导致 sw 使用来自工作箱源中的 url 进行 fetch 调用。在此期间,服务器找不到 cookie(获取不携带凭据 -链接)并发出重定向(302)到不同的 url(这使您可以在 cookie 中设置一些选项并刷新旧 url)。

  • 这会导致客户端出现以下错误The FetchEvent for "http://localhost:8080/" resulted in a network error response: a redirected response was used for a request whose redirect mode is not "follow".

  • 服务器发出重定向为 302 状态,但客户端导致: site can’t be reached The web page at http://localhost:8080/ might be temporarily down or it may have moved permanently to a new web address. ERR_FAILED

这是我的服务工作者代码,资产由 workbox-webpack 插件填充。

PS 这是我第一次尝试使用工作箱工具或服务人员,我可能错过或忽略了一些细节。请指出我的方向。

0 投票
1 回答
186 浏览

service-worker - 服务人员传播

我有一个用于缓存图像的服务工作者,这个服务工作者只在前端模板中注册,但它仍然不断扩散到我的管理模板中。

这会导致我的表单在验证令牌受到影响时表现出不可预测的行为。

使用一些console.log,我认为在到达请求的页面之前触发了安装事件,但我无法确定那里的当前/下一个URL。

如何防止服务人员传播到管理面板并干扰页面?我只想缓存资产。

就相关而言,这是我的服务人员:

0 投票
1 回答
888 浏览

javascript - Service Worker 创建问题:ERR_CONNECTION_REFUSED

我正在尝试创建我的第一个服务人员(已将我的本地服务器离线以测试该状态)。我在一个名为 app.js 的文件的顶部编写了以下代码:

然后在 serviceworker.js 文件中我有:

这是我在网页上得到的:

无法访问此站点

无法访问此站点

localhost 拒绝连接。

在 Google 上搜索本地主机 8443

ERR_CONNECTION_REFUSED

这是我在 Chrome 控制台中看到的消息:

07:42:35.401 导航到 chrome-error://chromewebdata/

07:42:36.453 获取脚本时发生未知错误。

07:42:36.453 localhost:8443/serviceworker.js 加载资源失败:

净::ERR_CONNECTION_REFUSED