-
Notifications
You must be signed in to change notification settings - Fork 2
コンテンツスクリプトとバックグラウンドスクリプト
mkihr-ojisan edited this page Jan 17, 2022
·
2 revisions
コンテンツスクリプトとバックグラウンドスクリプトってなんですか?→ここを見てください
Better Waseda Moodleには裏で動かしたい処理と表で動かしたい処理があるので、適当にコンテンツスクリプトとバックグラウンドスクリプトを使い分けています。例えば…
- ログイン処理
- コース一覧やタイムラインの取得
などは同時に複数回実行されたくなかったりIndexedDBを使いたかったりするので裏(バックグラウンドスクリプト)で動かしています。一方、
- 時間割表などのGUI
- その他のDOM操作
などの処理は、Moodleのページ上で動いて欲しいので表(コンテンツスクリプト)で動いています。
表から裏の処理を呼び出したい時(例えば、時間割表のためにコース一覧が欲しい時)は、MessengerServer
とMessengerClient
を使ってコンテンツスクリプト・バックグラウンドスクリプト間でやり取りをします。
// バックグラウンドスクリプト
function hoge(arg: string): string {
console.log(arg);
return "fuga";
}
MessengerServer.addInstruction({ hoge });
// コンテンツスクリプト
const fuga = await MessengerClient.exec("hoge", "これは引数");
バックグラウンドスクリプトとして実行して欲しいモジュールはassertCurrentContextType
関数でアサーションしていることが多いので、コンテンツスクリプトからimport
するとエラーが発生すると思います。