在我们的一位用户提出投诉并运行了一些测试后,似乎 Firefox 15 和 16(可能还有旧版本)可以做到这一点,因此如果您禁用 cookie,您也会禁用 localStorage。您甚至无法为它创建一个 polyfill,因为每当您尝试访问时,window.localStorage
您都会得到Error: The operation is insecure.
抛出一个 try catch 可以让您检查它是否被禁用,但不会让您用自己的解决方案替换变量。以下快速填充将不起作用,因为 FF 忽略设置变量并在尝试访问它时会抛出相同的错误:
try{
window.localStorage;
}catch(err){
window.localStorage = {
getItem: function(k){
return this.k;
},
setItem: function(k,v){
this.k = v;
}
};
}
唯一的解决方案似乎是将“假” localStorage 移动到另一个变量,但这会很烦人,因为我们有很多代码和一个依赖于访问这个变量的 js 库。有什么解决办法吗?
编辑:仅弹出警报告诉用户需要 cookie 并不是最佳选择。如果访问者只想查看网站而不是注册,那么他们真的不需要 cookie。但是作为一个backbone.js 应用程序并传递大量数据,我们确实在localStorage 中存储了很多东西。