4
1
個人開発エンジニア応援 - 個人開発の成果や知見を共有しよう!-

[Tips] 異なるオリジンのスクリプトをWeb Workerとして動作させる

Last updated at Posted at 2023-09-27

この記事は 個人開発エンジニア応援 - 個人開発の成果や知見を共有しよう!- - Qiita の参加記事です。

はじめに

Web Worker用のスクリプトをサイトのオリジンとは別でホストしたいというとき、
クロスオリジン制約により、スクリプトとサイトのオリジンが異なる場合はWeb Workerを起動できません。

なんとかできないかと調べていたところ、スクリプトのBlobを指すURLをつくることでできたので記事にします。

方法

Web Worker用のスクリプトをfetchし、Blobとして取得します。
そして、そのBlobを指すオブジェクトURLを生成し、そのURLでWorkerを起動します。

Workerを終了させるときは、オブジェクトURLも開放してあげます。

// Workerを起動するとき
const response = await fetch(WORKER_URL);
const blob = await response.blob();
const objectUrl = URL.createObjectURL(blob);

const worker = new Worker(objectUrl);

// Workerを終了させるとき
worker.terminate();
URL.revokeObjectURL(objectUrl);

Ref

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1