回到文章列表

HTML5 Storage:localStorage 與 sessionStorage

TWGD / 2019-01-11

localStorage 與 sessionStorage 主要差別

生命週期的長短

根據 MDN 的資料:

❗ unsupported type: quote
  • localStorage:基本上生命週期無限,除非自行刪除。
  • sessionStorage:當頁面關閉生命週期就結束。也就是只存在這個頁面的 session,若新開一個視窗或 tab,就無法存取了。
  • 簡單例子

    一個簡單的表單,實際體會 localStorage 與 sessionStorage 的生命週期。 用瀏覽器開啟檔案,輸入並儲存 localStorage 與 sessionStorage; 另開一個新的 tab 之後,local 這個 input 的欄位有值,session 這個 input 的欄位裡沒有。

    <body>
        <div>
            localStorage:<input type="text" class="localStorage" name="local" /><br>
            sessionStorage:<input type="text" class="sessionStorage" name="session" /><br>
            <button class="save">save</button><br>
            <button class="reset">reset</button><br>
        </div>
    
        <script>
            window.addEventListener('load', function(){
                document.querySelector('.localStorage').value = localStorage.getItem('local');
                document.querySelector('.sessionStorage').value = sessionStorage.getItem('session');
            });
    
            document.querySelector('.save').addEventListener('click', function(){
                localStorage.setItem('local', document.querySelector('.localStorage').value);  // 儲存這個 localStorage
                sessionStorage.setItem('session', document.querySelector('.sessionStorage').value);  // 儲存這個 sessionStorage
            });
    
            document.querySelector('.reset').addEventListener('click', function() {
                localStorage.removeItem('local');  // 清除這個 localStorage
                sessionStorage.removeItem('session');  // 清除這個 sessionStorage
            })
        </script>
    </body>
    

    localStorage 與 sessionStorage 基本用法

    localStorage 與 sessionStorage 用法基本上都差不多。

    注意:key 與 value 都是字串型態。( 因為存取的是 Storage object,與 objects 一樣,型態會強制轉換成字串 )。

    // Save data to sessionStorage
    sessionStorage.setItem('key', 'value');
    
    // Get saved data from sessionStorage
    let data = sessionStorage.getItem('key');
    
    // Remove saved data from sessionStorage
    sessionStorage.removeItem('key');
    
    // Remove all saved data from sessionStorage
    sessionStorage.clear();
    
    

    參考資料:

  • https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
  • https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
  • https://dotblogs.com.tw/jimmyyu/2011/03/27/html5-client-storage