Дело в том, что использование режима приватного просмотра в Safari для iOS <6 не приводит к пустым значениям <code>window.localStorage и window.sessionStorage
, и поэтому проверки !!window.localStorage
или !!window.sessionStorage
будет недостаточно, и все, что вы вызываете из этих компонентов просто потерпит неудачу, выдав эту QUOTA_EXCEEDED_ERR ошибку.
На этих платформах частный режим, похоже, устанавливает квоту на ноль. Вот почему, чтобы действительно протестировать эти функции, так же, как это делает Modernizr, вам придется заключить его в оператор try ... catch.
Модернизр код:
var mod = 'modernizr';
/*...*/
tests['localstorage'] = function() {
try {
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
};
Мы должны доверять веб-API, но достаточно осторожно.