问题标签 [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 投票
1 回答
997 浏览

promise - Service Worker 同步事件未触发

我在 indexedDB 中保留离线发布的评论并与服务人员注册同步,但是一旦重新上线,除非我发布新评论,否则同步不会触发。经过一些研究,我认为这是由于 event.waitUntil 函数中的链式承诺而发生的。也许有人可以引导我朝着正确的方向前进:

在任何时候我都得到

0 投票
0 回答
30 浏览

service-worker - 何时以及如何在 service worker 中触发同步事件?

我在如何以及何时触发同步事件方面遇到了一些问题。这是由用户进行某种输入引起的吗?我似乎在 Google 的开发文档中找到了有关当您再次联网时触发同步事件的内容(如果您失去了互联网)。这是台式机的情况吗?还是仅适用于移动设备?

0 投票
1 回答
722 浏览

javascript - 用 fetch 事件替换 service worker 中的资产

我正在尝试与我的服务人员热切换主题样式表。

我为 Jekyll 创建了一个主题(与 GitHub Pages 一起使用),并希望能够在深色主题和浅色主题之间进行替换(“关灯”)并使其保持一致。

现在,这是通过将状态保存到localstorage并据此替换主题link元素来实现的。

问题是,在获取原始白色主题之后进行检查,因此即使localstorage设置了深色主题,用户也会看到白色主题的闪光

这是它目前的行为方式(按钮位于右上角): https ://thatkookooguy.github.io/postmortem-demo/postmortem/002

更改主题后,尝试导航到另一个页面。页面以白色主题加载,然后更改为深色主题

我想我可以通过在服务工作者中切换脚本来解决这个问题,因为我可以addEventListenerfetch事件并用另一个提取替换它在承诺链中。

但是代码似乎不起作用。如果我在事件回调中添加一个调试点,它永远不会触发(不是在资产上,也不是在实际页面获取上)

HTML头

服务工作者代码

在 chrome 中调试时(和 chrome canary,因为我听说那里有更好的 service worker 调试支持),fetch甚至从未调用过回调。没有记录任何请求。

我确实看到服务人员在 chrome 的开发工具中注册并处于活动状态。我看到控制台中记录了其他事件。

此外,当调试并在脚本开头放置断点时,看起来好像bulmaswatch.min.css已经获取了。

知道我错过了什么吗?:-)

谢谢

0 投票
1 回答
2300 浏览

javascript - 如何让服务人员仅在第一次访问时注册?

嗨,我在 express 上有一个生成 HTML 的 ejs 模板。我已经在此模板中编写了我的服务工作者注册代码,该模板对网站的所有页面都是通用的,因此,注册代码最终会出现在网站的每个页面上。因此,在每次用户访问时,都会运行服务工作者注册代码,我认为这很糟糕。如何使此代码仅在用户第一次访问时运行?

请在下面找到我的代码:

0 投票
0 回答
1665 浏览

javascript - 在 Service Worker 中缓存跨域资产

我有域https://test.com。以下是我的服务人员代码

我需要缓存跨域资产。上面的代码抛出 Failed to load https://otherdomain.com/planet-styles.min.css:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ https://test.com ”。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

0 投票
1 回答
70 浏览

html - 移动 Web 推送通知上的用户操作

是否可以使用服务工作者为移动网络创建类似应用程序的推送通知?(例如,用户可以从通知中回复聊天消息)

0 投票
1 回答
953 浏览

service-worker - Service Worker w offline.html 备份页面

我无法显示offline.html 页面。我不断得到The FetchEvent for "https://my-domain.com" resulted in a network error response: a redirected response was used for a request whose redirect mode is not "follow".

这是我的 service-worker.js 的片段,它应该offline.html在网络不可用时返回。

下面是我的网络请求的console.log(离线时页面刷新)

0 投票
0 回答
281 浏览

javascript - PWA 没有更新缓存,我使用的是网络回退到缓存的方法

我在我的 sw.js 文件中尝试了以下代码,但它没有将更新的响应存储在缓存中。它在在线时显示更新的响应。但是当我下线时,它返回的响应与我第一次访问时相同。

我遵循以下参考 https://developers.google.com/web/ilt/pwa/caching-files-with-service-worker

0 投票
1 回答
373 浏览

laravel-5.3 - Service Worker fetch 事件永远不会被触发

我正在使用 Laravel 开发渐进式 Web 应用程序。我已经将PWA 推荐给 Laravel进行开发。首先我生成了服务工作者,然后在设置清单文件之后更新了 laravel mix。在布局中,我检查了服务工作者和推送通知支持。注册 service worker 后, install 和 activate 成功触发,但即使浏览器设置为脱机(如图像浏览器脱机),也不会触发 fetch 事件。也参考了这个视频PWA LARAVEL。package.json 文件的代码如图所示: webpack.config.js 文件的package.json代码为:webpack.config.js,blade(view) 中注册Service Worker的部分代码为:服务工作者注册。Service Worker 是在我的 laravel 项目的公共文件夹中生成的。我是 Laravel 和 PWA 的新手。谢谢你。

0 投票
1 回答
4478 浏览

progressive-web-apps - self.addEventListener('fetch', function(e) { }) 不工作

我对 PWA 有疑问,如果有人帮助我,我会很高兴。在我的 PWA 中,存储 HTML、JS 和 CSS 等静态文件没有任何问题。但我面临动态数据的问题。即:我self.addEventListener('fetch', function(e) { })没有被调用,但其他功能工作正常,即:“安装”和“活动”事件。

更具体地说,我使用@angular/service-worker的效果很好,但我创建了另一个名为sw.js. 在我sw-js的情况下,我正在听诸如“安装”、“活动”和“获取”之类的事件。我的sw.jsfetch 没有被调用,而其他两种方法运行良好。但是在ngsw-worker.js单独获取 fetch 方法时会被调用。

我需要的是在 PWA 中使用 Angular 进行 CRUD 操作。

提前致谢!