日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于'sessionStorage'与'userData'的类session存储

發布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于'sessionStorage'与'userData'的类session存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Storage.js:

?注意:此版本實現的存儲在符合Web存儲標準(ie8及ie8以上的版本與其他主流瀏覽器)的情況下與session的周期一致,但在頁面不關閉的情況下沒有過期時間,ie7及以下版本則默認是永久保存,但可以通過預留的方法setMaxAge(Number age)來設置有效期,設置0的話在關閉或刷新頁面時會清除緩存。

(function initStorageClass(win){var inherit=function(o){if(o===null || o ===undefined) throw TypeError();if(Object.create) return Object.create(o);var t = typeof o;if(t!=='object'&&t!=='function') throw TypeError();function f(){}f.prototype=o;return new f();};var extend=function(a,b){for ( var key in b) { a[key]=b[key]; }return a;};var defineSubclass=function(superclass,constructor,methods,statics){constructor.prototype=inherit(superclass.prototype);constructor.prototype.constructor=constructor;if(methods) extend(constructor.prototype,methods);if(statics) extend(constructor,statics);return constructor;};Function.prototype.extend=function(constructor,methods,statics){return defineSubclass(this,constructor,methods,statics);};// 創建一個抽象類var AbstractStorage=function AbstractStorage(){throw new Error('Can\'t create abstract class instance');};// 添加抽象類的實例方法(已實現) extend(AbstractStorage.prototype,{setItem:function(k,v){k=encodeURIComponent(k);v=encodeURIComponent(v);this.storage.setItem(k,v);return this;},getItem:function(k){k=encodeURIComponent(k);return decodeURIComponent(this.storage.getItem(k));},removeItem:function(k){k=encodeURIComponent(k);this.storage.removeItem(k);return this;},setMaxAge:function(age){ // 為IE的userData版本預留了設置有效期的方法if(isNaN(age)) throw new TypeError('userData\' max-age must be a number,but '+age+' is not a number');if(this.model&&this.model==='userData') {var now=new Date().getTime();var expires=now+age*1000;this.storage.expires=new Date(expires).toUTCString();} else {throw new Error('sessionStorage did\'t support set max-age。');}return this;}});var Storage=null;if(win.Storage) {// 實現了Web存儲標準的瀏覽器Storage=AbstractStorage.extend(function WebStorage(){// IE中實現了Web存儲標準的版本,在本地目錄下無法使用sessonStorageif(!win.sessionStorage) {throw new Error('local web is can\'t save sessionStorage');}this.model='sessionStorage';// 默認使用sessionStorage,也可以自己傳入,model自行修改this.storage=win.sessionStorage;});} else if(win.navigator.appVersion&&win.navigator.appVersion.indexOf('MSIE')>=0){// 不支持web存儲標準的IE瀏覽器(IE11的核心版本已和Netscape統一,IE8以上的支持web存儲標準)Storage=(AbstractStorage.extend(function IEStorage(maxAge){this.model='userData';this.maxAge=maxAge;this.storage=(function initUserData(t){var memory = document.createElement('div');memory.style.display='none';//附加userData行為memory.style.behavior='url("#default#userData")';document.appendChild(memory);if(t.maxAge) {// 設置userData有效期,默認永久,單位毫秒var now=new Date().getTime();var expires=now+t.maxAge*1000;memory.expires=new Date(expires).toUTCString();}memory.load('UserDataStorage'); //載入存儲的 extend(memory,{setItem:function(k,v){this.setAttribute(k,v);this.save('UserDataStorage');return this;},getItem:function(k){return this.getAttribute(k)||null;},removeItem:function(k){this.removeAttribute(k);this.save('UserDataStorage');return this;}});return memory;}(this));}));}win.IStorage=Storage;win.memory=new Storage()||null;// 創建一個實例對象,可以在腳本中直接引用 }(window));

?

index.html(簡單測試):

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="Storage.js"></script> <script type="text/javascript">window.onload=function(){memory.setItem('test','success');alert(memory.getItem('test'));}; </script> </head> <body></body> </html>

?

在HTML頁面中引用Storage.js文件,可以在宿主環境中直接使用已經生成的實例memory(window.memory)。也可以自己創建一個新實例new IStorage()

memory.setItem('test','success'); // add alert(memory.getItem('test')); // select memory.removeItem('test'); // delete

?

適用實現了Web存儲標準的瀏覽器(Storage)與IE瀏覽器(userData),userData的生命周期請自行根據項目進行設置。

轉載于:https://www.cnblogs.com/gabin/p/3723892.html

總結

以上是生活随笔為你收集整理的基于'sessionStorage'与'userData'的类session存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。