localStorageでデータの保存期限を設定する

localStorageでデータを保存した際、一部データの保存期限を設定したいということがあったので、対応方法をメモ。

サンプルコード

広告バナーをユーザーが閉じた後、一定期間は表示されないようにするという例で実装してみます。

1
2
3
4
<div id="ad-bnr">
    <p>広告バナーサンプルです。</p>
    <button id="ad-bnr_close">閉じる</button>
</div>

.is-showの追加・削除で表示・非表示を切り替えられるようにします。

1
2
3
4
5
6
7
8
9
#ad-bnr {
    display: none;
    width: 300px;
    padding: 30px;
    background: gray;
}
#ad-bnr.is-show {
    display: block;
}

最後にJavaScriptです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var period = 1000 * 60 * 1; // 保存期間:1分(1000ミリ秒 * 60秒 * 1分)
// localStorageで使用するkey名
var storage_key = 'ad_close'; // 広告バナー管理で使用する値
var storage_period_key = 'ad_close_time'; // 保存期間で使用する値
 
var ad = document.getElementById('ad-bnr');
 
// 保存期間の値が保存されている場合
if(localStorage.getItem(storage_period_key) !== null) {
  // 保存されている値と現在の値の差を見て、期間を過ぎていないか確認
  var df = Date.now() - parseFloat(localStorage.getItem(storage_period_key));
  if(df > period) {
    // 期間を過ぎている場合はlocalStorageの値を削除
    localStorage.removeItem(storage_key);
    localStorage.removeItem(storage_period_key);
  }
}
 
// 広告バナー管理の値が保存されていない場合はバナー表示
if(localStorage.getItem(storage_key) === null) {
  ad.classList.add('is-show');
}
document.getElementById('ad-bnr_close').addEventListener('click', ad_close, false);
 
// 広告バナーを閉じる際の処理
function ad_close() {
  ad.classList.remove('is-show');
  // localStorageに必要な値を保存
  localStorage.setItem(storage_key, 'on');
  localStorage.setItem(storage_period_key, Date.now());
}

コメントに入れている通りですが、localStorageで広告バナーの表示を管理する値(ad_close)と別に、期間を管理する値(ad_close_time)を使用しています。
広告バナーを表示するかの確認の前にad_close_timeの値と現在の差を確認して、期間が過ぎている場合は広告バナーが表示されるようにしています。
localStorageの保存期間設定のデモページ
保存期間はテストしやすいように1分にしていますが、1行目のperiod部分で適宜変更してください。

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2025年3月
 1
2345678
9101112131415
16171819202122
23242526272829
3031