English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este exemplo descreve como implementar o armazenamento local de informações em JS. Compartilho com vocês para referência, conforme abaixo:
O rápido desenvolvimento de aplicações WEB, tornou a salvaguarda de alguns dados uma necessidade importante, existem muitos métodos de implementação, o mais comum é o cookie, que todos usam frequentemente, mas as desvantagens do cookie são evidentes, outras soluções como: IE6Os userData, Firefox globalStorage, e o armazenamento local do Flash, além do Flash, todos têm alguns problemas de compatibilidade.
sessionStorage e localStorage
Web Storage é composto por duas partes: sessionStorage e localStorage.
sessionStorage é usado para armazenamento local de uma sessão (sessão) de dados, esses dados podem ser acessados apenas nas páginas da mesma sessão e são destruídos quando a sessão termina. Portanto, sessionStorage não é um armazenamento local persistente, é apenas um armazenamento de nível de sessão.
localStorage é usado para armazenamento local persistente, a menos que os dados sejam excluídos ativamente, os dados nunca expirarão.
userData
Sintaxe:
XML <Prefix: CustomTag ID=sID STYLE="behavior:url('#default#userData')" />
HTML <ELEMENT STYLE="behavior:url('#default#userData')" ID=sID>
Scripting object .style.behavior = "url('#default#userData')"
object .addBehavior("#default#userData")
Atributo:
expires configura ou obtém a data de expiração da salvaguarda de dados do userData behavior.
XMLDocument 获取 XML 的引用。
方法:
getAttribute() 获取指定的属性值。
load(object) 从 userData 存储区载入存储的对象数据。
removeAttribute() 移除对象的指定属性。
save(object) 将对象数据存储到一个 userData 存储区。
setAttribute() 设置指定的属性值。
localStorage
方法:
localStorage.getItem(key):获取指定 key 本地存储的值
localStorage.setItem(key,value):将 value 存储到 key 字段
localStorage.removeItem(key):删除指定 key 本地存储的值
封装
localData = { ;hname:location.hostname&63;location.hostname:'localStatus', ;isLocalStorage:window.localStorage&63;true:false, dataDom:null, initDom:function(){ //初始化 userData if(!this.dataDom){ try{ this.dataDom = document.createElement('input');//这里使用 hidden 的 input 元素 this.dataDom.type = 'hidden'; this.dataDom.style.display = "none"; this.dataDom.addBehavior('#default#userData');//这是 userData 的语法 document.body.appendChild(this.dataDom); var exDate = new Date(); exDate = exDate.getDate();+30; this.dataDom.expires = exDate.toUTCString();//设置过期时间 } return false; } } return true; }, set:function(key,value){ if(this.isLocalStorage){ window.localStorage.setItem(key,value); } if(this.initDom()){ this.dataDom.load(this.hname); this.dataDom.setAttribute(key,value); this.dataDom.save(this.hname); } } }, get:function(key){ if(this.isLocalStorage){ return window.localStorage.getItem(key); } if(this.initDom()){ this.dataDom.load(this.hname); return this.dataDom.getAttribute(key); } } }, remove:function(key){ if(this.isLocalStorage){ localStorage.removeItem(key); } if(this.initDom()){ this.dataDom.load(this.hname); this.dataDom.removeAttribute(key); this.dataDom.save(this.hname); } } } }
使用方法很简单,这节 set, get, remove 就好了。
在里面涉及到的 demo 代码如下:
<script type="text/javascript"> (function() { window.localData = { hname : location.hostname &63; location.hostname : 'localStatus', isLocalStorage : window.localStorage63; true : false; dataDom : null; initDom : function() { if (!this.dataDom) { try { this.dataDom = document.createElement('input'); this.dataDom.type = 'hidden'; this.dataDom.style.display = "none"; this.dataDom.addBehavior('#default#userData'); document.body.appendChild(this.dataDom); var exDate = new Date(); exDate = exDate.getDate(); + 30; this.dataDom.expires = exDate.toUTCString(); } catch (ex) { return false; } } return true; }, set : function(key, value) { if (this.isLocalStorage) { window.localStorage.setItem(key, value); } if (this.initDom()) { this.dataDom.load(this.hname); this.dataDom.setAttribute(key, value); this.dataDom.save(this.hname); } } }, get : function(key) { if (this.isLocalStorage) { return window.localStorage.getItem(key); } if (this.initDom()) { this.dataDom.load(this.hname); return this.dataDom.getAttribute(key); } } }, remove : function(key) { if (this.isLocalStorage) { localStorage.removeItem(key); } if (this.initDom()) { this.dataDom.load(this.hname); this.dataDom.removeAttribute(key); this.dataDom.save(this.hname); } } } }; var text = document.getElementById('localDataHook'); var btn = document.getElementById('clearBtnHook'); window.onbeforeunload = function() { localData.set('beiyuuData', text.value); }; btn.onclick = function() { localData.remove('beiyuuData'); text.value = '' }; if (localData.get('beiyuuData')) { text.value = localData.get('beiyuuData'); } })(); </script>
Há uma técnica muito útil para evitar que a página seja fechada, mostrando uma caixa de diálogo de confirmação de fechamento da página. O código de referência é o seguinte:
window.onbeforeunload = function() { if (!canLeavePage()) { return ('Confirma sair da página atual? Os dados não salvos serão perdidos!'); } };
Leitores interessados em mais conteúdo sobre JavaScript podem consultar as seções especiais deste site: 'Tutorial de Entrada em Objetos JavaScript', 'Técnica de Busca em JavaScript', 'Técnica de ESTRUTURA DE DADOS e ALGORITMO em JavaScript', 'Técnica de OPERAÇÃO JSON em JavaScript', 'Técnica de ERRO e DEBUG em JavaScript' e 'Técnica de OPERAÇÃO MATEMÁTICA em JavaScript'.
Espero que o que é discutido neste artigo ajude a todos a programar em JavaScript.
Declaração: o conteúdo deste artigo é extraído da Internet, pertence ao respectivo proprietário. O conteúdo é contribuído e carregado voluntariamente pelos usuários da Internet. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidades legais relacionadas.3codebox.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Aparentemente confirmada, o site será imediatamente eliminado do conteúdo suspeito de violação de direitos autorais.)