Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查本地存储是否可用?_Javascript_Html_Local Storage - Fatal编程技术网

Javascript 如何检查本地存储是否可用?

Javascript 如何检查本地存储是否可用?,javascript,html,local-storage,Javascript,Html,Local Storage,W3学校建议() 检查浏览器中是否有可用的本地存储 我使用以下方法 var l=localStorage!==null?localStorage:0; if(l) { /*code for locale storage*/} 我想知道这在所有浏览器上是否足够可靠 谢谢你的帮助 您可以用来检查这个 就像这里的答案一样: 有时浏览器会阻止对本地存储的访问,例如在匿名模式或私人模式下浏览时等等。。。因此,检查存储是否存在并不是最好的主意,因为有时它存在,但不可访问 您可以使用此功能: –你似乎认为w

W3学校建议()

检查浏览器中是否有可用的本地存储

我使用以下方法

var l=localStorage!==null?localStorage:0;
if(l) { /*code for locale storage*/}
我想知道这在所有浏览器上是否足够可靠

谢谢你的帮助

您可以用来检查这个

就像这里的答案一样:

有时浏览器会阻止对本地存储的访问,例如在匿名模式或私人模式下浏览时等等。。。因此,检查存储是否存在并不是最好的主意,因为有时它存在,但不可访问

您可以使用此功能:
  • –你似乎认为w3c学校与w3c有关联–它们不是

  • 使用
    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
    }