回到文章列表

    HTML5 Storage:localStorage 與 sessionStorage

    TWGD / 2019-01-11 / 閱讀時間約 1 分鐘

    localStorage 與 sessionStorage 主要差別

    生命週期的長短

    根據 MDN 的資料:

    localStorage is similar to sessionStorage, except that while data stored in localStorage has no expiration time, data stored in sessionStorage gets cleared when the page session ends — that is, when the page is closed.

    • 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()

    參考資料: