成人免费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

共享數據開發

2011-06-30 17:21:56

Qt 線程 共享

2024-12-26 10:28:44

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-06-26 08:55:35

LinuxWindows共享文件

2018-05-04 08:57:00

LinuxWindows共享文件

2015-10-15 10:24:01

數據Laravel 5

2019-07-10 09:30:49

Windows 10WindowsAlt + Tab

2022-05-03 10:08:53

WindowsLinux文件共享

2017-02-16 08:13:17

2020-08-10 08:28:19

ZeroMQCPython

2018-08-27 10:24:03

UbuntuPHP版本

2018-05-04 09:32:32

Linux快速監控rwho

2018-01-12 14:35:00

Linux進程共享內存

2024-01-30 15:29:20

Django數據庫Python

2017-04-19 22:00:40

UbuntuLinux Mint桌面共享

2017-02-10 20:00:17

Linux共享目錄命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美精品一区二区三区 | 狠狠骚| 欧美日韩国产一区二区三区 | 免费观看一级特黄欧美大片 | 亚洲成人精品一区 | 在线观看亚洲欧美 | 国产在线精品一区 | 7777久久| 精品视频一区二区 | 亚洲精品字幕 | 成人在线小视频 | av av在线| 亚洲一区二区三区高清 | 成人黄色在线观看 | 91在线成人 | 国产精品亚洲一区二区三区在线 | 91精品国产一区二区三区 | 99视频免费播放 | 欧美性久久 | 祝你幸福电影在线观看 | 亚洲欧美日韩精品久久亚洲区 | 色婷婷av99xx | 色播99| 人人看人人搞 | 国产激情91久久精品导航 | 成人妇女免费播放久久久 | 精品一区二区在线看 | 中文二区| 观看av | 欧美综合国产精品久久丁香 | 国产精品毛片一区二区在线看 | 亚洲视频免费在线 | 伊人久久国产 | 亚洲精品女人久久久 | 久久精品网 | 国产精品久久 | 亚洲福利网 | 国产精品美女久久久久久免费 | 五月婷婷导航 | 国产福利在线视频 | 成人一区二区三区 |