Javascript 如何检查本地存储是否可用?
W3学校建议() 检查浏览器中是否有可用的本地存储 我使用以下方法Javascript 如何检查本地存储是否可用?,javascript,html,local-storage,Javascript,Html,Local Storage,W3学校建议() 检查浏览器中是否有可用的本地存储 我使用以下方法 var l=localStorage!==null?localStorage:0; if(l) { /*code for locale storage*/} 我想知道这在所有浏览器上是否足够可靠 谢谢你的帮助 您可以用来检查这个 就像这里的答案一样: 有时浏览器会阻止对本地存储的访问,例如在匿名模式或私人模式下浏览时等等。。。因此,检查存储是否存在并不是最好的主意,因为有时它存在,但不可访问 您可以使用此功能: –你似乎认为w
var l=localStorage!==null?localStorage:0;
if(l) { /*code for locale storage*/}
我想知道这在所有浏览器上是否足够可靠
谢谢你的帮助 您可以用来检查这个
就像这里的答案一样:
有时浏览器会阻止对本地存储的访问,例如在匿名模式或私人模式下浏览时等等。。。因此,检查存储是否存在并不是最好的主意,因为有时它存在,但不可访问 您可以使用此功能:
window.localStorage
。如果没有窗口
,您将在不支持本地存储的浏览器中遇到引用错误
localStorage!==空
。在不支持的浏览器中,localStorage
将是未定义的
,而不是null
。更好的操作符应该是!=null,但我根本不会使用比较运算符。您可以直接将window.localStorage
传递给三元运算符(l=window.localStorage?localStorage:0
),或者更好地使用|
:
if (window.localStorage) {
// do stuff with localStorage
// no need to use window anymore
}
请看,我不喜欢使用任何外部库OK thx,我在localstorage代码之前设置了var默认值,并将在try and catch中使用本地存储包装我的代码。提示的Thx。@MacroBonelli-看起来Modernizer也在使用相同的方法检查
localStorage
是否存在。(您可能需要添加.removietem
以删除\u test
)这并不好,因为每次调用storageON
时,它都会执行try-catch。是的,它绝对没有问题。试捕是一个该死的说法,不是魔鬼。所以我不需要试捕部分?通常试捕比你需要的多。它处理一些脚本创建了名为localStorage
的全局变量的情况。只要您知道页面中包含哪些脚本,就不需要try-catch。另一方面,如果您正在编写一个库或插件,该库或插件将包含在您无法控制的其他站点中,那么使用try-catch技术更为合理。您是在window中使用'localeStorage
还是window.hasOwnProperty('localStorage'))
也是检查可用性的好方法?@zanona-这些方法可能在大多数情况下都很有效。它们有一些缺点,只有在不太清楚的情况下才会起作用。就我个人而言,我觉得他们多余的长篇大论没有吸引力。@gilly3 thx,在寻找问题时,我不知怎么错过了这个问题。然而,我认为你的答案比旧线索中的一次要好。
function storageON() {
try {
localStorage.setItem("__test", "data");
} catch (e) {
return false;
}
return true;
}
if (storageON()) { /* DO SOMETHING */ }
var l = window.localStorage || 0;
if (window.localStorage) {
// do stuff with localStorage
// no need to use window anymore
}