Skip to content

コンテンツスクリプトとバックグラウンドスクリプト

mkihr-ojisan edited this page Jan 17, 2022 · 2 revisions

コンテンツスクリプトとバックグラウンドスクリプトってなんですか?→ここを見てください


Better Waseda Moodleには裏で動かしたい処理と表で動かしたい処理があるので、適当にコンテンツスクリプトとバックグラウンドスクリプトを使い分けています。例えば…

  • ログイン処理
  • コース一覧やタイムラインの取得

などは同時に複数回実行されたくなかったりIndexedDBを使いたかったりするので裏(バックグラウンドスクリプト)で動かしています。一方、

  • 時間割表などのGUI
  • その他のDOM操作

などの処理は、Moodleのページ上で動いて欲しいので表(コンテンツスクリプト)で動いています。

表から裏の処理を呼び出したい時(例えば、時間割表のためにコース一覧が欲しい時)は、MessengerServerMessengerClientを使ってコンテンツスクリプト・バックグラウンドスクリプト間でやり取りをします。

// バックグラウンドスクリプト
function hoge(arg: string): string {
    console.log(arg);
    return "fuga";
}
MessengerServer.addInstruction({ hoge });

// コンテンツスクリプト
const fuga = await MessengerClient.exec("hoge", "これは引数");

バックグラウンドスクリプトとして実行して欲しいモジュールはassertCurrentContextType関数でアサーションしていることが多いので、コンテンツスクリプトからimportするとエラーが発生すると思います。

Clone this wiki locally