1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【GoogleChrome】localStorageを使って表示状態を保存可能にした

Last updated at Posted at 2018-03-31

概要

GoogleChromeの拡張機能を作る企画第2.5弾です。前回はこちら
以前実装したブックマーク一覧表示のアコーディオン表示の開閉状態を保存して、
次回表示時に復元できるようにしました。

コード

githubにコードを上げています。
https://github.com/mkt120/BookmarkListNewTab

LocalStorage

以下を参考に実装しました。
WebStorage API(LocalStorage)を使ってみた

key&value(String限定)形式で持てる設定ファイルってイメージです。
追加したのは大きく二か所

アコーディオン開閉時

クリックによるアコーディオンの開閉時に、localStorageに開閉状態を保持させるようにしました。

newtab.js
parentDiv.addEventListener("click", function(){
  var element = parentDiv.getElementsByClassName(CLASS_BOOKMARK_TITLE_ICON_VIEW)[0];
  var isOpen;
  if (childViews.style.display != "none") {
    // 開いている状態 クローズする  
    isOpen = 'false';
    element.innerHTML = TITLE_VIEW_ICON_OPEN;
    childViews.style.display = "none";
  } else {
    // 閉じている状態 オープンする
    isOpen = 'true';
    element.innerHTML = TITLE_VIEW_ICON_CLOSE;
    childViews.style.display = "";
 }
 var id = parentDiv.getAttribute('id');
 localStorage[id] = isOpen;
);

View生成時

View生成時にローカルストレージを参照して開閉状態を取得、表示状態に反映させるようにしました。

newtab.js
// localStorageから開閉状態を取得し、表示に反映
var isOpen = localStorage[id];
if (isOpen == 'true') {
  childViews.style.display = "";
} else {
  childViews.style.display = "none";
}

これで画面再表示時に、前回の表示状態が復元されるようになりました。

最後に

Android Javaしか書けない私なので、HTMLとかCSSとかJavascriptの勉強も兼ねてですが、
将来的にはiGoogleの機能を独自実装できるようになることを目指しています。

1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?