Skip to content

检查是否启用了localStorage或sessionStorage

使用localStoragesessionStorage经常会遇到一些挑战,其中最重要的是它们并不总是可用。这可能是由于浏览器的安全设置、用户的隐私设置,甚至是浏览器的版本所致。

无论如何,在使用之前检查localStoragesessionStorage是否可用总是一个好主意。

检查是否启用了localStorage

检查是否启用了localStorage需要一些试错,字面上来说,我们将使用try...catch块来测试localStorage中的操作是否受支持。

使用Storage.setItem()Storage.removeItem(),我们将尝试在localStorage中存储和删除一个值。如果两个操作都成功完成,我们将返回true,否则返回false

const isLocalStorageEnabled = () => {
  try {
    const key = `__storage__test`;
    window.localStorage.setItem(key, null);
    window.localStorage.removeItem(key);
    return true;
  } catch (e) {
    return false;
  }
};

isLocalStorageEnabled(); // 如果localStorage可访问,则返回true

检查是否启用了sessionStorage

检查是否启用了sessionStorage与检查是否启用了localStorage完全相同,只是我们将使用sessionStorage代替localStorage

const isSessionStorageEnabled = () => {
  try {
    const key = `__storage__test`;
    window.sessionStorage.setItem(key, null);
    window.sessionStorage.removeItem(key);
    return true;
  } catch (e) {
    return false;
  }
};

isSessionStorageEnabled(); // 如果sessionStorage可访问,则返回true

[!TIP]

您可以在先前的文章中了解localStoragesessionStorage之间的区别。