HTML5本地儲存sessionStorage的銷毀資料問題

來源:互聯網
上載者:User

標籤:oca   它的   click   公眾號   location   char   適合   ora   dex   

部落格採集來自於

http://www.cnblogs.com/pssp/p/6395530.html

的部落格,很感謝她。追夢子,讓我們一起進步吧。

前幾天項目中用到了本地儲存,雖然說也就是幾個api,但之前有一個問題一直沒有去想,我們知道本地儲存分為兩種,一種是臨時儲存,關閉瀏覽器後資料就會銷毀,另外一種是沒有時間限制的儲存,我們做的這個頁面比較適合使用臨時儲存,而本次要講的也就是臨時儲存的一個問題。頁面長下面這樣

我需要把使用者選擇了的資訊儲存下來,放到下個頁面顯示(產品經理嫌這個頁面內容太多了),在下面這個頁面取資料。

效果大概就是這樣,而我想知道的一個問題是,這個sessionStorage到底什麼時候會將資料銷毀,之前只知道關閉瀏覽器資料就會銷毀,但具體怎麼才算關閉就不是很清楚了,更別提在手機上了,但為了以後不再為這個問題而困惑,也就只有動手咯。

PC端測試

首先有兩個頁面,分別是index.html(用來儲存資料)和index2.html(用來取資料)代碼如下。

index.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title></head><body>  <a href="index2.html">擷取sessionStorage資料</a>  <script>    sessionStorage.messg = "所謂的害怕,就是看不見吧";  </script></body></html>

index2.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title></head><body>  <script>    alert(sessionStorage.messg);  </script></body></html>

先開啟index.html然後開啟index2.html,發現彈出的是undefined,也就是說index2.html訪問不到index.html中的資料,效果如下

嘗試了一下,通過超連結過去的是可以擷取到資料的,效果如下

為了驗證是否通過超連結才有效,於是建立了一個index3頁面,在index2頁面中加入超連結,連結到index3頁面中,效果如下

以上資訊說明了sessionStorage中的資料只對本頁面中的超連結有效。

我們接著來解決下一個問題,點瀏覽器X才算關閉頁面,還是關閉當前頁面就算是關閉?如

經過測試,直接點擊關閉瀏覽器,資料銷毀了。

關閉當前頁面資料的銷毀與否有兩種情況,如果它的頁面中沒有其他的超連結,或者沒有開啟,那麼關閉當前頁面,資料就會被銷毀。而如果通過當前這個頁面,開啟了其他的頁面,那麼只有當這些頁面都關閉了,資料才會銷毀。

還是拿剛剛那幾個頁面做實驗,效果如下

我從index頁面開啟了index2頁面,注意我在index.html中修改了a連結的target屬性

<a href="index2.html" target="_blank">擷取sessionStorage資料</a>

接著我將index.html關閉,重新整理index2.html,彈出如下

這也就驗證了以上的結論。

我猜測通過window.open開啟也是可以擷取到資料的,事實證明也確實可以,代碼如下

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>index</title></head><body>  <div id="box">點我跳轉到index2.html</div>  <script>    sessionStorage.messg = "所謂的害怕,就是看不見吧";    var box = document.getElementById("box");    box.onclick = function(){      window.open("./index2.html");    };  </script></body></html>

既然如此,我想通過location.href改變url路徑也應該可以,效果如下

在移動端測試了一下,和PC端類似,在公眾號的網站中,直接點擊關閉按鈕,或者是後退到公眾號介面,才算是關閉。在UC中,a連結跳轉始終在頁面表單中,所以關閉當前表單就算關閉。

因為以上的這幾個原因,在擷取資料的時候就會出現一個問題,使用者在某個下單頁,選擇了某個商品,然後他又跳到了另外一個商品上面,那麼就會將上一個商品選中的資訊在這個商品上顯示,在項目中我們的解決方案是,通過商品ID和儲存資料中的ID判斷,如果相同才去渲染之前選中的資料。

 

HTML5本地儲存sessionStorage的銷毀資料問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.