gpt4 book ai didi

javascript - 如何从 Service Worker 调用缓存的 ManifestEntry Javascript 函数?

转载 作者:行者123 更新时间:2023-12-03 02:10:18 25 4
gpt4 key购买 nike

我的构建生成一个预缓存 list ,如下所示:

self.__precacheManifest = [
{
"revision": "ea92339a72de73748c35",
"url": "/js/vendor.ea92339a.js"
},
{
"revision": "ce28c628eea246b643c9",
"url": "/js/manifest.ce28c628.js"
},
{
"revision": "f6fb0d3455c4d454bfc9",
"url": "/js/app.f6fb0d34.js"
},
{
"revision": "dc4521ffd102851e081b02ac893f4981",
"url": "/index.html"
},
{
"revision": "f6fb0d3455c4d454bfc9",
"url": "/css/app.69e433b0.css"
}
];

在我的 Service Worker 中,我将其置于顶部:

importScripts("/precache-manifest.14324d3ff39abcb589e6152671cf34d2.js", "https://storage.googleapis.com/workbox-cdn/releases/3.0.1/workbox-sw.js");

底部是:

self.__precacheManifest = [].concat(self.__precacheManifest || [])
workbox.precaching.precacheAndRoute(self.__precacheManifest, {})

这可行,但现在我想从 Service Worker 调用 /js/vendor.ea92339a.js 内部的方法,我该如何完成此操作?

额外信息:我使用的构建过程是 vue-cli 3, webpack 4 branch (still in beta)

最佳答案

你不能。

Service Worker 有自己的作用域,与通常的 JS 执行作用域(全局/窗口对象/其他)不同。您不能从其他 JS 文件调用 SW.js 中定义的函数,反之亦然。

相反,你可以做的是 @orangespark 在他/她的评论中建议的:

您可以通过 postMessage API 从 SW.js 向窗口发送消息,或者反之亦然。您可以在vendor.js和SW.js中附加事件监听器,然后发送事件监听器将以您想要的任何方式处理的消息。

关于javascript - 如何从 Service Worker 调用缓存的 ManifestEntry Javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49610020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com