问题标签 [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 - 服务人员不是在现场工作,而是在本地工作
用于实时和本地站点的 sw.js
本地服务人员注册
现场服务人员注册
本地网址
现场网址
请帮忙。我尝试了很多但没有成功。在本地,此代码会缓存所有 css、js、图像和 url,但在实时它只会为第三方调用创建缓存。
javascript - 如何使用 JSP 页面实现 Service Worker
我的文件结构如下
- 网络应用
- 资源
- 服务工作者.js
- 网络信息
- 意见
- 应用程序.jsp
- 意见
- 资源
服务工作者注册代码在 app.jsp 页面内。它正在访问 service-worker.js 文件。但是由于 service-worker.js 和注册代码都必须并行放置,因此 Service Worker 无法正常工作。
service-worker - Service Worker 未触发 fetch 事件
如下图所示,我的 Service Worker 处于活动状态,并且我正在获取的文件在 Service Worker 的范围内,但 fetch 事件仍未被触发。
Service Worker 拦截 fetch 是否还有其他必要条件?
javascript - 为什么我的 Service Worker 总是在等待激活?
我有这个非常基本的问题
我正在努力了解 Service Worker 的生命周期,或者更好的是,实际上是什么初始化和更改状态。
我现在有2个问题:
1 -chrome://inspect/#service-workers
总有 2 或 3 行,显示服务工作者都以相同的 PID 运行。为什么?为什么不是只有一个?
2-当我在刷新时检查我的服务人员时,我得到了这个:
- 第566章 启动并运行【停止】
- 第570章 等待激活【skipWaiting】
这意味着什么?什么是 566,什么是 570?我想它们是 sw 的实例,但为什么有两个呢?为什么 570 还在等待?我必须做些什么来确保它会被注册-安装-激活?
3- 一般问题
- 在正常生命周期中结束安装事件的原因是什么?
- 在正常生命周期中触发激活事件的原因是什么?
索引.html
sw.js
谢谢!
service-worker - 识别 FetchEvent 请求的来源/来源
ServiceWorker 有什么方法可以识别 no-cors/opaque 的来源或来源FetchEvent.Request
?或者我们是否可以将识别信息/数据从 HTML 显式传递给ServiceWorker
可用于识别FetchEvents
? 的来源。我使用查询字符串参数破解了一个解决方案,但我正在寻找比这更原生或更优雅的东西:
HTML
服务工作者
service-worker - Service Worker 或 FetchEvent 可以检测或侦听“停止”事件吗?
Service Worker 能否FetchEvent
检测到用户何时触发“停止”事件?例如,用户可以通过单击浏览器的停止按钮(或使用window.stop()
JavaScript)来阻止页面加载图像。我希望我的 Service Worker 检测到该事件。
caching - 服务工作者“安装”事件再次下载应该已经存在于浏览器缓存中的文件
在添加服务工作者和缓存 app-shell 之前,与网页相关的文件(例如 main.css、app.js、shims.js..)的传出请求被浏览器缓存。因此,对这些文件的任何进一步请求都会返回缓存版本(如果 max-age 过期,这些请求将使用 Etag 进行验证),其中也包括带有时间戳的请求。(此行为在页面正常访问期间仍然相同。)
现在网页 (PWA) 首次请求内容。接收到内容后,Service Worker 安装事件开始在后台获取指定文件:
其中一些是从浏览器缓存(磁盘/内存缓存)中获取的,但有些是再次下载的(de.json、en.json、app.js、shims.js、main.css),请参见 attacehd 图像。当从网页执行请求时,所有这些 URI 都包含时间戳,但在进一步请求时仍会从浏览器缓存中返回。
为什么在服务工作者的“安装”事件中获取这些文件时会有所不同?
顺便说一句,我正在尝试减少整体网络请求,因此再次下载这些文件不是很好..
javascript - Firefox:Service Worker:SecurityError:DOMException:操作不安全
在app.js
中,我正在检查 navigator 对象中是否存在 serviceWorker,如果可用,则注册 SW。
尝试注册 SW 时,我在 Firefox 中收到以下错误。我还确保该service-worker.js
文件位于src目录下。
在 Firefox(版本 59.0.2)中检查我的about:config我启用了 service worker 和 storage api。所以这应该不是问题。
PS:相同的代码在 Chrome 上运行良好。
firebase-cloud-messaging - Service Worker - 在 postMessage 之前等待 clients.openWindow 完成
我正在使用服务人员来处理后台通知。当我收到一条消息时,我正在Notification
使用self.registration.showNotification(title, { icon, body })
. 我正在使用self.addEventListener('notificationclick', ()=>{})
. 单击时,我正在检查是否有任何WindowClient
打开,如果打开,我将获取其中一个窗口客户端并调用postMessage
它以将数据从通知发送到应用程序以允许应用程序处理通知。如果没有我正在调用的打开窗口openWindow
,一旦完成,我将使用postMessage
.
我面临的问题是,postMessage
里面的电话openWindow
永远不会送达。我猜这是因为在页面完成加载之前发生的postMessage
调用WindowClient
,所以 eventListener 还没有注册来监听该消息?那正确吗?
如何从服务人员和 postMessage 打开一个新窗口到该新窗口。