Pierre Le Ro..
11
在我的上下文中,刚开发了一个类抽象.当我的应用程序启动时,我通过调用getStorage()检查localStorage是否正在工作.此功能还返回:
如果localStorage正在工作,则localStorage
或自定义类LocalStorageAlternative的实现
在我的代码中,我从不直接调用localStorage.我调用cusSto global var,我通过调用getStorage()初始化了.
这样,它适用于私人浏览或特定Safari版本
function getStorage() {
var storageImpl;
try {
localStorage.setItem("storage", "");
localStorage.removeItem("storage");
storageImpl = localStorage;
}
catch (err) {
storageImpl = new LocalStorageAlternative();
}
return storageImpl;
}
function LocalStorageAlternative() {
var structureLocalStorage = {};
this.setItem = function (key, value) {
structureLocalStorage[key] = value;
}
this.getItem = function (key) {
if(typeof structureLocalStorage[key] != 'undefined' ) {
return structureLocalStorage[key];
}
else {
return null;
}
}
this.removeItem = function (key) {
structureLocalStorage[key] = undefined;
}
}
cusSto = getStorage();
谢谢皮埃尔,你的回答激励了我.我最终把它打包在一个名为[memorystorage]的漂亮模块中(https://download.github.io/memorystorage).当然是开源的.对于有相同问题的其他人,请查看它可能会对您有所帮助. (2认同)
@ user1149244*这不应该存储在浏览器中的值吗?*不,它不能.客户端从一个页面刷新到另一个页面刷新有三种方法:cookies,sessionStorage/localStorage和IndexedDB.最后两个相对较新.sessionStorage和localStorage得到广泛支持,因此您可以在任何地方使用它.**除了隐私浏览模式**,这就是这个问题.程序破了,因为存储不存在.memorystorage只提供在页面上始终有效的回退,但它实际上无法保存数据.这是一个存根.但没有错误. (2认同)