由于CookieProvider的长度4k限制,每次都提交cookie的内容
实现了一个基于firefox的gloabalStorage,基于ie的userdata的状态管理器,代码如下:
Ext.state.SessionStorageStateProvider = function(config){
Ext.state.SessionStorageStateProvider.superclass.constructor.call(this);
try{
if(Ext.isIE)
{
this.storage = new ewp.util.IESessionStorage("ewpstate");
}else if(window.globalStorage)
{
this.storage = window.globalStorage[window.location.hostname];
}
}catch(e){
}
};
Ext.extend(Ext.state.SessionStorageStateProvider, Ext.state.Provider, {
get : function(name, defaultValue){
if(!this.storage)
{
return defaultValue;
}
try{
var value = this.storage.getItem("ys-"+name)
return value == "undefined" ? defaultValue : this.decodeValue(value);
}catch(e){
return defaultValue;
}
},
// private
set : function(name, value){
if(!this.storage)
{
return;
}
if(typeof value == "undefined" || value === null){
this.clear(name);
return;
}
try{
this.storage.setItem("ys-"+name, this.encodeValue(value));
Ext.state.SessionStorageStateProvider.superclass.set.call(this, name, value);
}catch(e){
}
},
// private
clear : function(name){
if(!this.storage)
{
return;
}
try{
this.storage.removeItem(name)
Ext.state.SessionStorageStateProvider.superclass.clear.call(this, name);
}catch(e){
}
}
});
ewp.util.IESessionStorage = function(fileName){
this.fileName = fileName;
this.ele = document.documentElement;
this.ele.addBehavior("#default#userdata");
this.ele.load(fileName);
}
ewp.util.IESessionStorage.prototype = {
setItem:function(key, value){
this.ele.setAttribute(key, value);
this.ele.save(this.fileName);
},
getItem:function(key){
return this.ele.getAttribute(key);
},
removeItem:function(key){
this.ele.removeAttribute(key);
this.ele.save(this.fileName);
},
deleteSelf:function(){
this.ele.expires = new Date(315532799000).toUTCString();
this.ele.save(this.fileName);
}
}
由于不清楚当长度达到限制或者存储所依赖的文件发生变动,系统将出现如何的状况,所以就统一的把异常都吃掉了。
参考内容:
ie下使用userdata的例子:
http://www.blogjava.net/emu/articles/39485.html
http://msdn.microsoft.com/en-us/library/ms531424(VS.85).aspx
https://developer.mozilla.org/cn/DOM/Storage
http://en.wikipedia.org/wiki/HTTP_cookie
分享到:
相关推荐
8.4.4 状态管理:ext.state.manager、ext.state.provider、ext.state.local-storageprovider和ext.state.cookieprovider / 426 8.5 综合实例 / 426 8.5.1 使用子模板 / 426 8.5.2 递归调用模板 / 428 8.6 本章...
代码如下:Ext.state.CookieProvider = function(config){ Ext.state.CookieProvider.superclass.constructor.call(this); this.path = “/”; this.expires = new Date(new Date().getTime()+(1000*60*60*24*7)); //...
Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); Ext.onReady(function(){ /************************** 联系人树形菜单**************************/ var contacterTree = new Ext.tree....
im 基于流的超快速样板特征SSR +流渲染样式化的组件React头盔代码分割热装包裹进行中(高)修复更漂亮的jsx换行符(Q)是否应立即提供LazyBoundary,RecoilRoot,ThemeProvider,CookieProvider,WebFont策略?...
麦肯锡 组织 概述与基本框架gl.ppt
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
大型强子对撞机电源转换器设计与运行挑战
本文档提供了一套完整的STM32F411低功耗开发板资源,包含详细的原理图、PCB设计源文件、官方提供的示例程序以及必要的驱动程序。这些资料对于嵌入式系统开发者来说是宝贵的学习资源,特别适合那些希望深入了解STM32F411微控制器及其应用的学生、工程师和电子爱好者。文档旨在帮助用户快速上手STM32F411的开发工作,无论是进行学术研究、产品原型设计还是个人项目实践,都能从中获益。 关键词标签: STM32F411 低功耗 开发板 资料下载
该项目以发债企业作为研究对象,利用财务逻辑和技术手段对178个原始特征指标进行有效筛选,构建了基于多种机器学习算法的模型,对比后挑选LightGBM模型作为最终模型进行更精细化训练,最终模型关键预测指标均有比较好的效果。 使用说明 BondDefault文件为项目代码 基于机器学习的发债主体违约风险预测.pdf为pdf形式的项目文稿 基于机器学习的发债主体违约风险预测.pptx为ppt形式的项目展示 由于数据集太大,此处没有上传
Rain Birdt Simple To Set Timer (SST) 使用说明书
SITRANS LVL 200S, LVL 200E 振动式安全手册
麦肯锡-xx电信市场分析报告gl.ppt
基于matlab实现的三次样条插值法 求信号的包络线 源代码.rar
麦肯锡_xx大客户培训战略报告gl.ppt
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。