HTML5中localStorage的使用
<h2>为什么要存在localStorage</h2><p>在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。</p>
<h2>localStorage的优势与局限</h2>
<h3><strong>localStorage的优势</strong></h3>
<p>1、localStorage拓展了cookie的4K限制</p>
<p>2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在<span style="color: rgba(255, 0, 0, 1)"><strong>高版本的浏览器</strong></span>中才<span style="color: rgba(255, 0, 0, 1)"><strong>支持</strong></span>的</p>
<h3><strong>localStorage的局限</strong></h3>
<p>1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性</p>
<p>2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换</p>
<p>3、localStorage在浏览器的隐私模式下面是不可读取的</p>
<p>4、localStorage本质上是对字符串的读取,如果<span style="color: rgba(255, 0, 0, 1)"><strong>存储内容多的话会消耗内存空间,会导致页面变卡</strong></span></p>
<p>5、localStorage不能被爬虫抓取到</p>
<p>localStorage与sessionStorage的唯一一点区别就是<span style="text-decoration: underline"><span style="color: rgba(255, 0, 0, 1); text-decoration: underline"><strong>localStorage属于永久性存储</strong></span></span>,而<span style="text-decoration: underline"><strong><span style="color: rgba(255, 0, 0, 1); text-decoration: underline">sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空</span></strong></span></p>
<p>所以,<span style="text-decoration: underline"><strong><span style="color: rgba(255, 0, 0, 1); text-decoration: underline">开发时,当用了某些前端框架(如x-admin)的时候发现死活清不掉的情况下,</span></strong></span><span style="text-decoration: underline; color: rgba(255, 0, 0, 1)"><strong>重启就没有清掉的情况下,可能就是用了localstorage</strong></span>。</p>
<h2>localStorage的使用</h2>
<h3>判断<strong>浏览器是否支持localStorage这个属性</strong></h3>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(!window.localStorage){
alert(</span>"浏览器不支持localstorage"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
}</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">主逻辑业务</span>
}</pre>
</div>
<h3>写入<strong>localStorage</strong></h3>
<p>localStorage的使用也是遵循同源策略的,所以不同的网站直接是不能共用相同的localStorage</p>
<p>写入相同key的键值对,会自动覆盖。</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">var</span> storage=<span style="color: rgba(0, 0, 0, 1)">window.localStorage;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">写入a字段</span>
storage["a"]=1<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">写入b字段</span>
storage.b=2<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">写入c字段</span>
storage.setItem("c",3);</pre>
</div>
<h3>读取localStorage</h3>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第一种方法读取</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> a=<span style="color: rgba(0, 0, 0, 1)">storage.a;
console.log(a);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第二种方法读取</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> b=storage["b"<span style="color: rgba(0, 0, 0, 1)">];
console.log(b);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第三种方法读取</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> c=storage.getItem("c"<span style="color: rgba(0, 0, 0, 1)">);
console.log(c);</span></pre>
</div>
<h3>删除localStorage</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> storage=<span style="color: rgba(0, 0, 0, 1)">window.localStorage;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">根据主键删除</span>
storage.removeItem("a"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">直接清空</span>
storage.clear();</pre>
</div>
<h3><strong>localStorage的键获取</strong></h3>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">var</span> storage=<span style="color: rgba(0, 0, 0, 1)">window.localStorage;
storage.a</span>=1<span style="color: rgba(0, 0, 0, 1)">;
storage.setItem(</span>"c",3<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i=0;i<storage.length;i++<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> key=<span style="color: rgba(0, 0, 0, 1)">storage.key(i);
console.log(key);
}</span></pre>
</div>
<h3><strong>localStorage存取json</strong></h3>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">if</span>(!<span style="color: rgba(0, 0, 0, 1)">window.localStorage){
alert(</span>"浏览器不支持localstorage"<span style="color: rgba(0, 0, 0, 1)">);
}</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 0, 255, 1)">var</span> storage=<span style="color: rgba(0, 0, 0, 1)">window.localStorage;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> data=<span style="color: rgba(0, 0, 0, 1)">{
name:</span>'xiecanyong'<span style="color: rgba(0, 0, 0, 1)">,
sex:</span>'man'<span style="color: rgba(0, 0, 0, 1)">,
hobby:</span>'program'<span style="color: rgba(0, 0, 0, 1)">
};
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">使用JSON.stringify()这个方法,来将JSON对象转换成为JSON字符串</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> d=<span style="color: rgba(0, 0, 0, 1)">JSON.stringify(data);
storage.setItem(</span>"data"<span style="color: rgba(0, 0, 0, 1)">,d);
console.log(storage.data);
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">使用JSON.parse()方法将JSON字符串转换成为JSON对象输出</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> json=storage.getItem("data"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> jsonObj=<span style="color: rgba(0, 0, 0, 1)">JSON.parse(json);
console.log(</span><span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)"> jsonObj);
}</span></pre>
</div>
<p> </p>
<p>参考</p>
<p>https://www.cnblogs.com/st-leslie/p/5617130.html</p>
</div>
<div id="MySignature" role="contentinfo">
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ~<br>
<img id="ViewPicture1_GalleryImage" alt="微信公众号二维码" src="https://images.cnblogs.com/cnblogs_com/aeolian/1679458/o_wechat_gzh_qrcode.jpg" style="height: 258 px; width: 258 px; border-width: 0px">
<br><br><br>
来源:https://www.cnblogs.com/aeolian/p/12073455.html
頁:
[1]