sessionstorage和localstorage的使用与区别
localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。
-
localStorage:生命周期是永久,除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。
-
sessionStorage:生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。
Tips:页面及标签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。
示例代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="./js/jquery-3.5.1.min.js"></script>
</head>
<body><h3>Session Storage的值:</h3>
<p id="sessionStorageText"></p><h3>Local Storage的值:</h3>
<p id="localStorageText"></p><button id="setSessionStorageBtn">set sessionStorage</button>
<button id="setLocalStorageBtn">set localStorage</button>
<hr>
<button id="getSessionStorageBtn">get sessionStorage</button>
<button id="getLocalStorageBtn">get localStorage</button><script>$(function (){// 页面加载完毕就获取localStorage和sessionStorage的值var sessionStorageText = sessionStorage.getItem("sessionStorageText");var localStorageText = localStorage.getItem("localStorageText");$("#sessionStorageText").html(sessionStorageText)$("#localStorageText").html(localStorageText)})// 设置sessionStorage的值$("#setSessionStorageBtn").click(function () {var value = prompt("请输入sessionStorage的值");sessionStorage.setItem("sessionStorageText", value);$("#sessionStorageText").html(value)});// 设置localStorage的值$("#setLocalStorageBtn").click(function () {var value = prompt("请输入localStorage的值");localStorage.setItem("localStorageText", value);$("#localStorageText").html(value)});</script>
</body>
</html>
查看浏览器的SessionStorage和LocalStorage的值: