首页 > web前端 > js教程 > 如何保持 Chrome 扩展的 Service Worker 持久性?

如何保持 Chrome 扩展的 Service Worker 持久性?

Linda Hamilton
发布: 2024-12-10 11:21:12
原创
699 人浏览过

How to Keep a Chrome Extension's Service Worker Persistent?

如何在 Chrome 扩展中保留 Service Worker

简介

在标准 Chrome 扩展中,Service Worker 不能持久化,这对拦截数据或长期维护状态至关重要的场景提出了挑战。本文探讨了克服此限制的各种方法。

解决方法

漏洞利用 (Chrome 110)

Chrome 110 存在一个允许服务工作线程的 bug通过调用任何异步 Chrome 保持活动状态延长 30 秒API。

// background.js
const keepAlive = (i => state => {
  if (state && !i) {
    if (performance.now() > 20e3) chrome.runtime.getPlatformInfo();
    i = setInterval(chrome.runtime.getPlatformInfo, 20e3);
  } else if (!state && i) {
    clearInterval(i);
    i = 0;
  }
})();

async function doSomething() {
  try {
    keepAlive(true);
    const res = await (await fetch('........')).text();
    // ...........
  } catch (err) {
    // ..........
  } finally {
    keepAlive(false);
  }
}
登录后复制

离屏 API (Chrome 109 )

此 API 允许创建离屏文档,每 30 秒发送一次消息,以保持 Service Worker 处于活动状态。

  • Manifest.json: "permissions": ["offscreen"]
  • offscreen.html:
  • offscreen.js: setInterval(() => (await navigator.serviceWorker.ready).active.postMessage('keepAlive'), 20e3);
  • background.js:

    async function createOffscreen() {
    await chrome.offscreen.createDocument({ url: 'offscreen.html', reasons: ['BLOBS'], justification: 'keep service worker running' }).catch(() => {});
    }
    chrome.runtime.onStartup.addListener(createOffscreen);
    createOffscreen();
    登录后复制

NativeMessaging API (Chrome 105 )

连接到 nativeMessaging通过 chrome.runtime.connectNative 进行主机保持 Service Worker 运行只要连接处于活动状态。

// background.js
const connect = () => {
  chrome.runtime.connectNative('nativemessaging_host').onDisconnect.addListener(connect);
};

connect(); // Start the connection on startup
登录后复制

WebSocket API (Chrome 116)

每 30 秒交换一次 WebSocket 消息可以使服务工作线程保持活动状态。

专注选项卡

打开一个专用选项卡,其中包含用作持久后台页面的扩展页面。

以上是如何保持 Chrome 扩展的 Service Worker 持久性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板