service-worker 相关问题

服务工作者是JavaScript代码,一旦向相关的来源和范围注册,即使其控制的页面不再打开,也会响应浏览器启动的事件。通过处理`fetch`事件,服务工作者可以提供自定义网络行为,例如离线支持(通过Cache API)。通过处理`push`事件,服务工作者可以“醒来”并显示通知。

旧服务人员缓存以前的网站

我有一个用 Gatsby 构建的旧网站,它使用 gatsby-plugin-offline 通过服务工作者缓存页面。我创建了一个新站点(在 NextJS 中),现在通过 Netlify 部署到相同的 URL...

回答 1 投票 0

使用 Angular Service Worker 时如何在注销后清除 api 的响应缓存?

我通过使用角度生成的服务工作线程缓存API的响应,现在我想在用户决定注销后清除这些缓存,我制作了新的自定义服务工作线程文件来监听混乱...

回答 1 投票 0

Workbox SW 将有错误的请求保留在队列中

我使用 workbox-background-sync 插件在用户离线时对 POST 请求进行排队,设置如下: const postSyncPlugin = new BackgroundSyncPlugin('post-requests', { 最大保留时间...

回答 1 投票 0

服务工作线程无法处理 React vite 中的 .tsx/.jsx 文件。为什么?

console.log("服务人员"); 常量 OFFLINE_ASSETS = [ “/”, “/src/main.tsx”, “/vite.svg”, `https://crypted-tbn0.gstatic.com/images?q=tbn:

回答 1 投票 0

为什么在我更改 Service Worker 后 safari 会要求允许在每个 window.open() 上弹出窗口?

为什么 safari 在我更改 Service Worker 后要求允许在每个 window.open() 上弹出窗口?并且不允许打开新选项卡。这是我的 Service Worker 的代码。 更新我的 Service Worker 后...

回答 1 投票 0

减少GTag脚本的阻塞时间

如果你能认出这一点: 第一秒这是一个很重的文件,所以它很重要。 我什么...

回答 1 投票 0

为什么我的网页在使用 Service Worker 缓存离线服务时速度很慢?

我正在尝试使我的网页完全离线工作,但在尝试从缓存加载时遇到了一些加载时间问题 我目前正在缓存我的网站所需的所有文件...

回答 1 投票 0

没有 URL 的 Service Worker 参数

有没有一种方法可以在不更改脚本 URL 的情况下将值传递给 Service Worker? const 注册 = 等待 navigator.serviceWorker.register("/sw.js?version=" + 版本, { 范围:'/...

回答 1 投票 0

从 Javascript 强制完全刷新 Blazor WebAssembly PWA 应用程序

此代码位于index.html中。我使用最新版本的 Blazor WebAssembly PWA 应用程序调用 updateVersion。第一行是 Service Worker 的原始注册,它是

回答 3 投票 0

Fetch API 无法加载 <URL>。请求模式是“no-cors”但重定向模式不是“follow”

当我禁用 Shield 时,我仅在 Brave 浏览器中遇到此问题。我的博客上有 OWA 分析文件: https://stats.jcubic.pl/modules/base/js/owa.tracker-combined-min.js 我使用我的服务...

回答 1 投票 0

PWA 添加到主屏幕不显示弹出窗口

我为我的静态站点实现了 PWA。服务工作人员注册成功,我的页面也如我预期的那样离线工作,但真正的问题在于添加到主屏幕 我包括清单....

回答 4 投票 0

为什么我在客户端上看不到client.postMessage?

我的服务人员中有以下代码: 消息传递.onBackgroundMessage(函数(有效负载){ console.log("onBackgroundMessage 电子邮件和 contact_link:"); console.log(payload.data.email,pa...

回答 2 投票 0

Firefox 中的视频源不会调用 Service Worker

我的 Firefox 行为相当奇怪,我无法解释。想象一下这两个非常简单的 HTML 标签: ... 我的 Firefox 行为相当奇怪,我无法解释。想象一下这两个非常简单的 HTML 标签: <img src="http://localhost:1234/api/getBlob?file=1.jpg">... <video src="http://localhost:1234/api/getBlob?file=2.mp4">... 我编写了一个 Service Worker,将 JWT 添加到 Authorization 标头,因为我的后端不是公开的。 self.addEventListener('fetch', function (event) { const url = event.request.url.toLowerCase(); if (!url.includes('api/getblob')) { return; } if (event.request.headers.has('Authorization')) { return; } event.respondWith( (async function () { const token = await requestTokenFromMainThread(); const headers = new Headers(event.request.headers); headers.set('Authorization', 'Bearer ' + token); const modifiedRequestInit = { headers: headers, mode: 'cors', credentials: 'omit', }; const modifiedRequest = new Request(event.request, modifiedRequestInit); try { return fetch(modifiedRequest); } catch (error) { console.error('Error fetching resource:', error); return new Response('Error fetching resource', { status: 500 }); } })(), ); }); function requestTokenFromMainThread() { return new Promise((resolve) => { const channel = new MessageChannel(); channel.port1.onmessage = (event) => { resolve(event.data); }; self.clients.matchAll().then((clients) => { if (clients && clients.length) { clients[0].postMessage('requestToken', [channel.port2]); } }); }); } 这非常适合 Safari 和基于 Chromium 的浏览器(例如 Edge 或 Chrome 本身)。但 Firefox 的情况开始变得奇怪。虽然 <img src 是由服务人员处理的,但 <video src 不是,而且我从来没有进入过 fetch 函数。所以我把调试点放在 const url = event.request.url.toLowerCase(); 上,这永远不会被 <video src 击中,但会被 <img src 击中,我不确定为什么。 编辑1: 在 Firefox 中,如果我转到有问题的请求并单击“在控制台中用作获取” - 那么,正如几乎预期的那样,它就像一个魅力。 Firefox 中该问题的“修复”方法是将 crossorigin="anonymous" 属性添加到 video 标签中: <video src="..." crossorigin="anonymous"></video> 无论如何,我确实为 Firefox 打开了一张票,因为如果未定义 crossorigin,我不确定这是否是预期的行为。 门票:https://bugzilla.mozilla.org/show_bug.cgi?id=1923096

回答 1 投票 0

Angular 未捕获(承诺):ChunkLoadError:加载块 XXX 失败

我使用的是 Angular 12,我使用 Service Worker 来部署新版本。 看起来每次我将新版本部署到生产环境时(并且由于某种原因不在暂存阶段)。一些用户收到一堆

回答 3 投票 0

在 Manifest V3 下的 Firefox 中的 Service Worker 中使用 importScripts()

我正在开发浏览器扩展。在 Chrome 中,我可以简单地这样做: 清单.json: “背景”: { "service_worker": "脚本/vh_service_worker.js", }, 而我...

回答 1 投票 0

如何避免在 Service Worker 推送事件中显示通知

我目前在一个已经生成弹出消息的应用程序中工作,所以我想用firebase在后台监听推送通知,但我只想将一些数据传递给客户端,并避免

回答 2 投票 0

我如何在 chrome Extension(manifest V3) 的 Service Worker 中包含一个 socket.io-client

我从cdn复制了客户端socket.io脚本,然后使用importScript,但是当我真正运行它时,它给出了 ReferenceError:文档未定义 在 JSONPPolling.doPoll (socketio.js:3683) 在

回答 3 投票 0

将值从 Service Worker 传递到 HTML

我正在尝试改进我最近制作的渐进式网络应用程序。为了在开发时节省一点时间并降低出错的风险,我想自动显示版本号...

回答 1 投票 0

Firefox 上的 Firebase,不支持模块

我有一些用于推送通知的 Firebase 代码,可以在 Chrome 和 iOS Safari 上运行,但无法在 Firefox 上运行 文档说 Firefox 不支持模块 哈...

回答 1 投票 0

Capacitor Service Worker 注册未知错误/网络连接被拒绝

我目前正在使用 Capacitor 制作一个应用程序,因为它使用内部 https 服务器而不是文件协议向 WebView 提供文件,这应该允许我使用服务工作者...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.