如何检查localstorage是否可用?

时间:2014-08-03 20:24:25

标签: javascript html5 local-storage

W3Schools建议(http://www.w3schools.com/html/html5_webstorage.asp

if(typeof(Storage) !== "undefined") {
    // Code for localStorage/sessionStorage.
} else {
    // Sorry! No Web Storage support..
}

检查浏览器中是否有本地存储空间。

我使用以下

var l=localStorage!==null?localStorage:0;
if(l) { /*code for locale storage*/}

并且想知道这在所有浏览器上是否足够可靠?

谢谢我真的很感谢你的帮助!

3 个答案:

答案 0 :(得分:10)

  1. w3fools - 你似乎认为w3schools与w3c有关 - 他们不是。

  2. 使用window.localStorage。如果没有window,您将在不支持ReferenceError的浏览器中获得localStorage

  3. 请勿使用localStorage !== null。在非支持的浏览器中,localStorage将是undefined,而不是null。更好的运算符是!= null,但我根本不会使用比较运算符。您可以直接将window.localStorage传递给三元运算符(l = window.localStorage ? localStorage : 0),或者更好的是,使用||

  4. var l = window.localStorage || 0;
    

    修改:真的,这就是您所需要的:

    if (window.localStorage) {
        // do stuff with localStorage
        // no need to use window anymore
    }
    

答案 1 :(得分:1)

您可以使用Modernizr来检查此内容。

就像在这里的答案: How to detect if browser supports HTML5 Local Storage

答案 2 :(得分:0)

有时浏览器会阻止对localStorage的访问,例如当您以隐身模式或私人模式等浏览时...所以检查存储是否存在不是最好的主意,因为有时它存在,但是无法访问。

您可以使用此功能:

function storageON() {
    try {
        localStorage.setItem("__test", "data");
    } catch (e) {
        return false;
    } 
    return true;
}

if (storageON()) { /* DO SOMETHING */ }