見出し画像

【Chrome拡張機能開発入門】設定画面などで情報をローカルに保存する、また読み込む

Chromeブラウザの拡張機能を開発する際、ポップアップ画面や設定画面にて設定項目のデータをローカルに保存したり、また読み込む方法を取り上げてみたいと思います。

用意するファイル

今回は下記のdeveloper.chrome.comのソースコードを主に参照しつつ、解説したいと思います。

設定画面ですが、こちらのHTMLファイル「options.html」を使用します。

<!DOCTYPE html>
<html>
<head><title>My Test Extension Options</title></head>
<body>

好みの色:
<select id="color">
<option value="red">赤</option>
<option value="green">緑</option>
<option value="blue">青</option>
<option value="yellow">黄色</option>
</select>

<br>

<label>
 <input type="checkbox" id="like">
 色占いを信じる
</label>

<br>

<div id="status"></div>
<button id="save">保存</button>

<script src="options.js"></script>
</body>
</html>

設定画面を表示させるとこのようになると思います。今回例として使用するデータのタイプとしては、リストタイプとチェックボックスタイプになります。

スクリーンショット 2020-02-02 午後10.55.56

次はJavaScriptの「options.js」です。

// Saves options to chrome.storage
function save_options() {
 var color = document.getElementById('color').value;
 var likesColor = document.getElementById('like').checked;
 chrome.storage.sync.set({
   favoriteColor: color,
   likesColor: likesColor
 }, function() {
   // Update status to let user know options were saved.
   var status = document.getElementById('status');
   status.textContent = '保存されました';
 });
}

// Restores select box and checkbox state using the preferences
// stored in chrome.storage.
function restore_options() {
 // Use default value color = 'red' and likesColor = true.
 chrome.storage.sync.get({
   favoriteColor: 'red',
   likesColor: true
 }, function(items) {
   document.getElementById('color').value = items.favoriteColor;
   document.getElementById('like').checked = items.likesColor;
 });
}
document.addEventListener('DOMContentLoaded', restore_options);
document.getElementById('save').addEventListener('click',
   save_options);

今回のポイント

今回注目するべきポイントですが、関数としてはデータの保存やデータの読み込み、また設定画面が表示されたタイミングでデータの読みを行う、また設定画面の保存ボタンが押されたタイミングでデータの保存を行う形となります。

データを保存する

chrome.storage.sync.set

データを読み込む

chrome.storage.sync.get

設定画面が表示される際のイベントリスナー

document.addEventListener('DOMContentLoaded', restore_options);

設定画面内の保存ボタンが押された際のイベントリスナー

document.getElementById('save').addEventListener('click',
   save_options);

また、ローカルにデータを保存する際はmanifestにその旨を記載する必要がありますので忘れずに。

    "permissions": [ "storage" ],

デバッグに関する注意点

通常であれば、console.logにて吐き出したい情報をChromeブラウザのコンソール画面に出力できますが、今回のような設定画面では利用することができないため、代わりに下記の関数を使うことでコンソール画面に出力ことができます。

chrome.extension.getBackgroundPage().console.log("デバッグメッセージ");

この記事が気に入ったらサポートをしてみませんか?