[]LocalStorage的bug

官方的LocalStorage 有个bug,  如果浏览器不支持存储功能, (比如自己写app壳,用的webView默认就不开启; 或者有些浏览器的无痕模式)。 那么用了LocalStorage.getItem,  setItem的地方,就会报错。 然后整个游戏就崩掉了。
 
解决方案是: 修改 libs下 LocalStorage类里的Storage 类里的init()方法   (第94行),
public static function init():void {
__JS__("try{Storage.items=window.localStorage;Storage.setItem('laya', '1');Storage.removeItem('laya');Storage.support = true;} catch(e){}if(!Storage.support)console.log('LocalStorage is not supprot or browser is private mode.')");
}
 
改成
public static function init():void {
__JS__("try{Storage.items=window.localStorage;Storage.setItem('laya', '1');Storage.removeItem('laya');Storage.support = window.localStorage != null;} catch(e){}if(!Storage.support)console.log('LocalStorage is not supprot or browser is private mode.')");
}
已邀请:

Aar0n

赞同来自:

已经提交,如果采用会在下个版本应用

mylukelu

赞同来自:

好像添加上也不管用的。我们目前遇到的问题是第一次冷启动app以后,先执行setItem成功,立马getItem也有值,但kill掉app以后再冷启动app,再通过getItem获取时没有值了。这个时间再执行setItem成功,立马getItem也有值。然后再kill掉app以后再冷启动app,再通过getItem获取时有值了。不知道为什么第二冷启动的时候没有获得值。

要回复问题请先

商务合作
商务合作