ホームページ > ウェブフロントエンド > jsチュートリアル > Chrome 拡張機能の Service Worker を永続的に維持するにはどうすればよいですか?

Chrome 拡張機能の Service Worker を永続的に維持するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-10 11:21:12
オリジナル
700 人が閲覧しました

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

Chrome 拡張機能で Service Worker を永続化する方法

はじめに

標準の Chrome 拡張機能では、Service Worker を永続化することはできません永続化されるため、データの傍受や長期間にわたる状態の維持が重要なシナリオでは課題が生じます。この記事では、この制限を克服するためのさまざまな方法を検討します。

回避策

バグエクスプロイト (Chrome 110)

Chrome 110 には、Service Worker が使用できるバグがあります。非同期 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 を使用すると、Service Worker をアクティブに保つために 30 秒ごとにメッセージを送信するオフスクリーン ドキュメントを作成できます。

  • Manifest.json: "権限": ["オフスクリーン"]
  • offscreen.html:
  • offscreen.js: setInterval(() => (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 )

WebSocket メッセージの交換間隔が 30 秒未満であれば、Service Worker はアクティブに保たれます。

専用タブ

永続的な背景ページとして機能する拡張ページを含む専用のタブを開きます。

以上がChrome 拡張機能の Service Worker を永続的に維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート