使えそうなAPIの紹介

簡単に。

情報を保存する

storage.local.get()storage.local.set() を。

"permissions" の設定をお忘れなく。

3種類あるけど、とりあえず storage.local で良さそう。

  • storage.local - 端末単位に保存される情報。何も考えずに使える
  • storage.sync - ログインして端末間で共有される情報っぽい。Firefoxはひと手間ある
  • storage.managed - 実質 manifest.json で定義する情報を読む専用っぽい。別途 runtime.getManifest() もある。

あと await 使う場合はその外側が async になっている必要があります。

(async () => {
  const message = document.querySelector('#message');

  // 最初に読み込み
  const result = await browser.storage.local.get(['message']);
  message.value = '2';
  message.value = result.message || 'Hello World!';

  // 変更あれば書き込み
  message.addEventListener('input', async () => {
    browser.storage.local.set({ message: message.value });
  });
})();

見ているページに挿入する

特定のページ、あるいは全ページにJSファイルやCSSファイルを挿入する場合は、 manifest.jsoncontent_scripts を使う。

スクリプトからコードを生成して実行する場合、あるいはJSファイルやCSSファイルを挿入する場合は tabs.executeScript()tabs.insertCSS() を使う。いずれも manifest.json"permissions""activeTab" を許可する。

挿入したファイルからブラウザー拡張が持つファイルにアクセスする場合(画像を表示するとか)、 manifest.jsonweb_accessible_resources を使ってアクセス権の設定が必要。

設定画面

manifest.jsonoptions_ui を使う。

ちなみに options_page というのもある。

拡張専用の任意ページ

tabs.create() で、 url の指定を / から始めて任意のHTMLファイル等を指定する。

manifest.json の情報を得る

runtime.getManifest() を使う。

スクリプト間でやりとりする

本文でもやったけど、 runtime.sendMessage()runtime.onMessage でやりとりする。バックグラウンドからその他へ、あるいはその他からバックグラウンドへのメッセージ送受信になるっぽい。

コンテンツスクリプトだと受信できない?

おしまい

っていう話をVuePressを使ってやってみたんだけど、どこで公開しようとか考えてる間に先に内容をある程度出しておこうと思ってここに置いておきます。

今後とも何卒宜しくお願い致します。