Javascript, сравнивающий 2 проверки для localStorage - PullRequest
3 голосов
/ 16 января 2011

Я видел это на сайте diveintohtml5. Вот как они проверяют, поддерживается ли локальное хранилище в браузере.

return 'localStorage' in window && window['localStorage'] !== null;

Это было бы так же, как просто делать?

return window.localStorage != undefined

Ответы [ 4 ]

8 голосов
/ 16 января 2011

1

return 'localStorage' in window && window['localStorage'] !== null;

Возвращается значение true, если объект window содержит свойство с именем localStorage и значением этого свойства не является null.


2

return window.localStorage != undefined

Возвращает значение true, если объект window содержит свойство с именем localStorage и значением этого свойства не является undefined или null (Я предполагаю, что глобальное свойство undefined содержит значение undefined)

5 голосов
/ 16 января 2011

То же самое результат в любом случае, поскольку, если window.localStorage равно undefined, вы оба получите false. И если window.localStorage равно нулю, вы оба получите false, потому что undefined == null.

Однако я предпочитаю использовать !! только потому, что это самый быстрый способ преобразования в логическое значение, и насколько полезен localStorage, если он ложный, нулевой, неопределенный, '', NaN или 0?

return !!window.localStorage;

Редактировать Одно предостережение, они не совсем одинаковы, так как если вы установите window.localStorage на undefined, то первый сообщит об этом как true

1 голос
/ 08 марта 2011

Вы можете использовать Modernizr (1.1 или более позднюю версию) для обнаружения поддержки локального хранилища HTML5.

if (Modernizr.localstorage) {
  // window.localStorage is available
} else {
  // no support for local storage
}
0 голосов
/ 16 января 2011

Я бы хотел порекомендовать вам следующую функцию:

function getLocalStorage(){
   if (typeof localStorage == “object”){
      return localStorage;
   } else if (typeof globalStorage == “object”){
      return globalStorage[location.host];
   } else {
      throw new Error(“Local storage not available.”);
   }
}
  1. Первой проверки будет достаточно, чтобы убедиться, что localStorage доступен
  2. Некоторые браузеры все еще не поддерживают локальное хранилище, но глобальное хранилище. Он имеет тот же набор функций, но имеет некоторые отличия по сравнению с localStorga
  3. Если ни одно из хранилищ не поддерживается, выведите исключение.

Если вы хотите прочитать о глобальном хранилище, сравните его с локальным хранилищем, посмотрите «JavaScript для веб-разработчиков», глава 19. В нем описываются локальные хранилища клиента, сравниваются его с файлами cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...