百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

html5之Localstorage本地存储详解

zhezhongyun 2025-01-12 20:16 27 浏览


Localstorage本地存储基本用法

如何创建和访问 localStorage

<script type="text/javascript">localStorage.lastname="Smith";document.write(localStorage.lastname);</script>

上面就创建了一个localStorage。

我们再来做一个刷新页面,增加访问次数的功能!很简单,代码如下:

<script type="text/javascript">if (localStorage.pagecount)

?{

?localStorage.pagecount=Number(localStorage.pagecount) +1;

?}else

?{

?localStorage.pagecount=1;

?}document.write("Visits "+ localStorage.pagecount + " time(s).");</script>

上面是用点的方式进行操作,localStorage还有存储API,具体如下:

  • 调用setItem()方法,将对应的名字和值传递出去,可以实现数据存储

  • 调用getItem()方法,将名字传递出去,可以获取对应的值

  • 调用removeItem()方法,名称作为参数,可以删除对应的数据

  • 调用clear()方法,可以删除所有存储的数据

  • 使用length属性以及key()方法,传入0~length-1的数字,可以枚举所有存储数据的名字

用法如下:

localStorage.setItem("name", "haorooms"); ? ?// 以"name"为名字存储一个字符串localStorage.getItem("name"); ? ? ? ? ? ?// 获取"name"的值// 枚举所有存储的名字/值对for(var i=0; i<localStorage.length; i++){ ? ? ? ?// length表示所有的名值对总数

? ?var name = localStorage.key(i); ? ? ? ? ? ?// 获取第i对的名字

? ?var value = localStorage.getItem(name); ? ? ? ?// 获取该对的值}localStorage.removeItem("name"); ? ? ? ?// 删除"name"项localAStorage.clear(); ? ? ? ? ? ? ? ?// 全部删除

sessionStorage和Localstorage区别

sessionStorage用法和Localstorage用法一样,区别就是,sessionStorage是会话存储,关闭浏览器,存储内容就会被清除。

低版本浏览器存储兼容方案

IE User Data

微软在IE5及之后的IE浏览器中实现了它专属的客户端存储机制——“userData”。

userData可以实现一定量的字符串数据存储,对于IE8以前的IE浏览器中,可以将其用作是Web存储的替代方案。

iLocalStorage插件

由于IE8以下浏览器的本地存储API不一样,所以就写了个插件兼容各大浏览器存储。提供的方法及用法如下:

getItem: 获取属性setItem: 设置属性removeItem: 删除属性iLocalStorage.setItem('key', 'value');console.log(iLocalStorage.getItem('key'));iLocalStorage.removeItem('key');

插件代码

/**

* LocalStorage 本地存储兼容函数

* getItem: 获取属性

* setItem: 设置属性

* removeItem: 删除属性

*

*

* @example

*

? ?iLocalStorage.setItem('key', 'value');

? ?console.log(iLocalStorage.getItem('key'));

? ?iLocalStorage.removeItem('key');

*

*/(function(window, document){

? ?// 1. IE7下的UserData对象

? ?var UserData = {

? ? ? ?userData: null,

? ? ? ?name: location.href,

? ? ? ?init: function(){

? ? ? ? ? ?// IE7下的初始化

? ? ? ? ? ?if(!UserData.userData){

? ? ? ? ? ? ? ?try{

? ? ? ? ? ? ? ? ? ?UserData.userData = document.createElement("INPUT");

? ? ? ? ? ? ? ? ? ?UserData.userData.type = "hidden";

? ? ? ? ? ? ? ? ? ?UserData.userData.style.display = "none";

? ? ? ? ? ? ? ? ? ?UserData.userData.addBehavior("#default#userData");

? ? ? ? ? ? ? ? ? ?document.body.appendChild(UserData.userData);

? ? ? ? ? ? ? ? ? ?var expires = new Date();

? ? ? ? ? ? ? ? ? ?expires.setDate(expires.getDate() + 365);

? ? ? ? ? ? ? ? ? ?UserData.userData.expires = expires.toUTCString();

? ? ? ? ? ? ? ?} catch(e){

? ? ? ? ? ? ? ? ? ?return false;

? ? ? ? ? ? ? ?}

? ? ? ? ? ?}

? ? ? ? ? ?return true;

? ? ? ?},

? ? ? ?setItem: function(key, value){

? ? ? ? ? ?if(UserData.init()){

? ? ? ? ? ? ? ?UserData.userData.load(UserData.name);

? ? ? ? ? ? ? ?UserData.userData.setAttribute(key, value);

? ? ? ? ? ? ? ?UserData.userData.save(UserData.name);

? ? ? ? ? ?}

? ? ? ?},

? ? ? ?getItem: function(key){

? ? ? ? ? ?if(UserData.init()){

? ? ? ? ? ? ? ?UserData.userData.load(UserData.name);

? ? ? ? ? ? ? ?return UserData.userData.getAttribute(key);

? ? ? ? ? ?}

? ? ? ?},

? ? ? ?removeItem: function(key){

? ? ? ? ? ?if(UserData.init()){

? ? ? ? ? ? ? ?UserData.userData.load(UserData.name);

? ? ? ? ? ? ? ?UserData.userData.removeAttribute(key);

? ? ? ? ? ? ? ?UserData.userData.save(UserData.name);

? ? ? ? ? ?}

? ? ? ?}

? ?};

? ?// 2. 兼容只支持globalStorage的浏览器

? ?// 使用: var storage = getLocalStorage();

? ?function getLocalStorage(){

? ? ? ?if(typeof localStorage == "object"){

? ? ? ? ? ?return localStorage;

? ? ? ?} else if(typeof globalStorage == "object"){

? ? ? ? ? ?return globalStorage[location.href];

? ? ? ?} else if(typeof userData == "object"){

? ? ? ? ? ?return globalStorage[location.href];

? ? ? ?} else{

? ? ? ? ? ?throw new Error("不支持本地存储");

? ? ? ?}

? ?}

? ?var storage = getLocalStorage();

? ?function iLocalStorage(){

? ?}

? ?// 高级浏览器的LocalStorage对象

? ?iLocalStorage.prototype = {

? ? ? ?setItem: function(key, value){

? ? ? ? ? ?if(!window.localStorage){

? ? ? ? ? ? ? ?UserData.setItem(key, value);

? ? ? ? ? ?}else{

? ? ? ? ? ? ? ?storage.setItem(key, value);

? ? ? ? ? ?}

? ? ? ?},

? ? ? ?getItem: function(key){

? ? ? ? ? ?if(!window.localStorage){

? ? ? ? ? ? ? ?return UserData.getItem(key);

? ? ? ? ? ?}else{

? ? ? ? ? ? ? ?return storage.getItem(key);

? ? ? ? ? ?}

? ? ? ?},

? ? ? ?removeItem: function(key){

? ? ? ? ? ?if(!window.localStorage){

? ? ? ? ? ? ? ?UserData.removeItem(key);

? ? ? ? ? ?}else{

? ? ? ? ? ? ? ?storage.removeItem(key);

? ? ? ? ? ?}

? ? ? ?}

? ?}

? ?if (typeof module == 'object') {

? ? ? ?module.exports = new iLocalStorage();

? ?}else {

? ? ? ?window.iLocalStorage = new iLocalStorage();

? ?}})(window, document);

其他插件

localForage:https://github.com/mozilla/localForage

store.js:https://github.com/marcuswestin/store.js

------------------

切图网(qietu.com)是一家专门从事html5前端开发的服务机构,长期致力于提供高品质的psd转html5、响应式切图、webapp切图,h5切图等web前端开发服务。

专注web前端开发技术,关注用户体验,加我们公众微信账号:qietuwang(长按复制)

相关推荐

用豆包生成的BMI计算器(豆包的热量是多少?)

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8&#...

Android 开发中文引导-应用小部件

应用小部件是可以嵌入其它应用(例如主屏幕)并收到定期更新的微型应用视图。这些视图在用户界面中被叫做小部件,并可以用应用小部件提供者发布。可以容纳其他应用部件的应用组件叫做应用部件的宿主(1)。下面的截...

Qt推流(视频文件/视频流/摄像头/桌面转流媒体rtmp+hls+webrtc)

一、前言说明推流直播就是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号从手机端,电脑端,摄影机端打包传到服务器的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观...

一看就会!谷歌广告转化跟踪详细设置指南来了

在出海推广业务中,投放广告最常见的目的是获取订单,但我们怎么知道有没有达成投放目的呢?谷歌转化跟踪技术就可以做到!熟悉谷歌的卖家朋友都知道,转化跟踪在最近几年变得越来越复杂了,虽然有很多选项可以自定义...

Android原生编解码接口MediaCodec详解

作者:躬行之MediaCodec是Android中的编解码器组件,用来访问底层提供的编解码器,通常与MediaExtractor、MediaSync、MediaMuxer、MediaCrypt...

手把手搭建RTSP流媒体服务器(rtsp 流媒体)

0.引言本文主要讲解如何搭建RTSP流媒体服务器的过程,使用开源项目ZLMediaKit。通过这个开源项目,推RTSP流到服务器,然后拉流端可以拉取RTSP、RTMP等流。ZLMediaKit码云链接...

MediaInfo 24.04.0 是一个关于多媒体文件的信息提供工具

MediaInfo24.04.0是一个关于多媒体文件的信息提供工具(仅当文件中包含信息时才提供):包括常规信息(标题、作者、导演、专辑、曲目编号、日期、时长等);视频信息(编解码器、画面比例、帧率...

rmvb格式视频怎么打开,rmvb转MP4认准这个方法

 一、rmvb是什么格式?  RMVB是一种视频文件格式,其中的VB指的是可变比特率。比起上一代的RM格式,RMVB  格式的画面比较清晰,因为它是降低了静态画面下的比特率。  二、制作rmvb  ①...

教你用Plex Media Server,把铁威马变成你的“私人好莱坞”!

TNAS(铁威马NAS)中可以安装多媒体服务器、影视、PlexMediaServer、EmbyServer作为个人媒体服务器使用。PlexMediaServer可以组织整理TNAS上的媒体...

你肯定用过!经典Windows软件被抛弃

Windows系统这些年持续更新的过程中,不断融入新的软件和功能的同时,一些经典的应用也渐渐成为了历史……Windows媒体播放器被抛弃Windows系统不断地推陈出新,一些老旧的组件也难免被抛弃,在...

博思得Q8标签打印全能手(博思得标签打印机安装教程)

2014-12-0905:35:00作者:宋达希【中关村在线办公打印频道原创】服装吊牌、洗涤标签、产品说明标签等都要用到标签打印机,这些标签涵盖多种尺寸的长度和宽度以及材质。另外作为一件商品或者产...

flv文件用什么播放器打开,这样做不踩雷!

FLV是FLASHVIDEO的简称,是随着FlashMX的推出发展而来的视频格式。它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。一、...

media player怎么转换格式?音频转换神器推荐!

Windowsmediaplayer怎么转换格式?WindowsMediaPlayer是微软公司出品的一款多媒体播放器,通常简称“WMP”。提供了编辑音频和视频文件的功能。用户可以使用该软件导...

视频参数检查工具更新:MediaInfo 23.10

MediaInfo提供有关视频或音频文件的技术和标签信息。信息示例包括编解码器、比特率、每秒帧数、宽度、高度、频道数、持续时间、标题、作者、字幕语言和章节名称。多种方式可以查看信息(文本、工作表、树和...

多媒体管理软件:JRiver Media Center 31.0.68 (64位)

JRiverMediaCenter64位是适用于大量库的完整媒体解决方案。它组织、播放和标记所有类型的媒体文件,并对Xbox、PS3、UPnP、DLNA和TiVo进行翻录、刻录。JRiverM...