成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SessionStorage 如何在多個 tab 間共享數據?

開發 前端
sessionStorage 確實無法在多個窗口或標簽之間共享數據。但是當通過 window.open 或鏈接打開新頁面時,新頁面將復制前一頁面的 sessionStorage,以此來完成數據共享!?

Hello,大家好,我是 Sunday。

過了臘八就是年,Sunday 提前祝大家新年快樂,2025 暴富暴富暴富!

我們知道 SessionStorage 是不可以在多個 tab 之間共享數據的。但是一個同學在面試的時候,卻被面試官問到:“SessionStorage 如何在多個 tab 間共享數據?” 注意: 他并沒有問能不能,而是問的 如何? 那么是他問錯了嗎?恐怕不是的~~

面試流程回顧

我聽了這位同學的面試錄音整個流程是由三個問題組成的:

問題一:localStorage和sessionStorage有什么區別?

  • localStorage的數據是持久化的,只要我們不主動清除它,它就會一直存在。
  • 而 sessionStorage 會隨著選項卡/窗口的關閉,結束會話并清除存儲的數據。

問題二:同域下localStorage可以共享數據嗎?

當然可以。我們可以直接通過簡單的代碼來驗證這個問題:

// 在一個網頁中保存數據
localStorage.setItem('name', '張三')
// 從另一個同域的網站中可以直接獲取
localStorage.getItem('name') // 張三

問題三:那么 sessionStorage 可以在多個 tab 間共享數據嗎?

重頭戲來了!

這位同學回答的是:“不可以!” 每個窗口或選項卡都有一個單獨的 sessionStorage,它們之間沒有數據共享!

但是你確定嗎?

如何實現 sessionStorage 數據共享

我們先看下 mdn 中對 sessionStorage 的介紹:

圖片圖片

根據 mdn 的描述我們可以清楚的看到,打開多個相同的 URL 的 Tabs 頁面,會創建各自的 sessionStorage 也就是說 不可共享。

所以,我們來做一個實驗:

  1. 我們創建兩個 html 文件,分別為 test.html  和  test02.html
// test.html
<body>
  <button id="btn">點我</button>

  <script>
    const btn = document.querySelector('#btn')
    btn.addEventListener('click', () => {
      window.sessionStorage.setItem('name', '張三')
      window.open('http://127.0.0.1:5500/test02.html')
    })
  </script>
</body>
// test02.html
<body>
  <div id="name"></div>

  <script>
    const nameEle = document.querySelector('#name')
    nameEle.innerHTML = window.sessionStorage.getItem('name')
  </script>
</body>

兩塊代碼并不復雜,在 test 中我們保存了 name 到 sessionStorage 同時打開了 test02.html ,并且 保證他們是同域的,然后再 test02 中,輸出了保存的 name(注意: 以上代碼需要運行在服務上)。

執行以上代碼之后,可以發現在 test02 中 成功 的打印出了保存的數據 張三!

分析原因

那么以上實驗證明 sessionStorage 似乎可以共享數據。難道 mdn 上說的是錯誤的嗎?當然不是。

以下是結論:

sessionStorage 確實無法在多個窗口或標簽之間共享數據。但是當通過 window.open 或鏈接打開新頁面時,新頁面將復制前一頁面的 sessionStorage,以此來完成數據共享!


責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2023-07-11 16:01:47

共享數據開發

2024-12-26 10:28:44

2011-06-30 17:21:56

Qt 線程 共享

2019-07-08 08:59:41

Docker容器主機

2020-02-24 13:06:55

Python數據幀開發

2011-03-24 17:28:58

網絡數據庫

2022-03-07 05:40:34

桌面LinuxKDE Plasma

2018-05-04 08:57:00

LinuxWindows共享文件

2018-06-26 08:55:35

LinuxWindows共享文件

2019-07-10 09:30:49

Windows 10WindowsAlt + Tab

2022-05-03 10:08:53

WindowsLinux文件共享

2018-08-27 10:24:03

UbuntuPHP版本

2018-05-04 09:32:32

Linux快速監控rwho

2015-10-15 10:24:01

數據Laravel 5

2017-04-19 22:00:40

UbuntuLinux Mint桌面共享

2017-02-10 20:00:17

Linux共享目錄命令

2024-01-30 15:29:20

Django數據庫Python

2017-02-16 08:13:17

2020-08-10 08:28:19

ZeroMQCPython

2011-08-01 16:41:05

ibmdwCloudBurst配置網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 又黄又爽的网站 | 国产精品视频一区二区三区四蜜臂 | 国产区在线观看 | 羞羞视频一区二区 | 超碰97在线免费 | 91精品欧美久久久久久久 | 国产精品一区久久久 | 天天曰天天曰 | 国产一级毛片精品完整视频版 | 一区二区免费在线视频 | 久久成人免费视频 | 欧美亚洲激情 | 免费久久久 | 免费看91| 91视频精选 | 国产在线视频一区 | 欧美日韩视频一区二区 | 日本在线播放 | 免费在线观看成人 | 午夜视频在线播放 | 久草网址 | 一级欧美一级日韩片 | 国产精品不卡 | 成人一区二区在线 | 久久久婷 | 特级做a爰片毛片免费看108 | 久久av网站| 国产中文在线观看 | 国产做a爱免费视频 | 丝袜美腿一区二区三区 | 色婷婷国产精品 | 中文一区| 久久久久亚洲 | 影音先锋成人资源 | 成人黄色在线观看 | 日韩精品 电影一区 亚洲 | 久久婷婷国产麻豆91 | 亚洲v日韩v综合v精品v | 久久婷婷国产麻豆91 | 特黄一级 | 91免费在线播放 |