2016-11-29 3 views
1

Я получаю эту ошибку на Safary моего iPhone в, при выполнении localStorage.setItem ('пользователя', some string here):Ошибка: превышена квота. на Safari IOS 10

Error: The quota has been exceeded. 
[email protected][native code] 

Это не приватный режим! Pls помогает понять, какие другие обстоятельства могут сделать localStorage неработающим.

+0

Возможный дубликат [html5 LocalStorage ошибка с Safari: "QUOTA \ _EXCEEDED \ _ERR: DOM Exception 22:. Была сделана попытка добавить что-то к хранилищу, что превысило квоту"] (HTTP: // StackOverflow. com/questions/14555347/html5-localstorage-error-with-safari-quota -выше-err-dom-exception-22-an) –

ответ

1

На самом деле это был частный режим. Похоже, что он включен по умолчанию для новых iphones.

+0

Подождите. Что это за частный режим? Я просто столкнулся с этой проблемой, когда Chrome работает нормально, но Safari не работает, и я просто вычислил, как делать Web Inspector с моего iPhone. (https://developer.apple.com/library/content/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html#//apple_ref/doc/uid/TP40007874-CH2-SW2) Но, возможно, какая-то дополнительная информация здесь будет помогите людям понять, почему у нас есть это препятствие в частном режиме, чтобы перебраться и как его избежать? Я не хочу, чтобы мои пользователи изменяли настройки Safari для мобильных телефонов. – iJames

+0

И спасибо Apple за такое полезное сообщение об ошибке. :-(Угловой и Satellizer оба определяют это «o = k (b) || (h.warn (« Этот браузер не поддерживает веб-хранилище! »), {« Но квота превзошла? – iJames

0

Я создал этот класс, чтобы помочь обойти частный просмотр. Однако при обновлении браузера хранилище будет удалено.

const data = {}; 
let hasLocalStorage = false; 

if (localStorage) { 
    try { 
    const x = 'storageTest'; 
    localStorage.setItem(x, x); 
    localStorage.removeItem(x); 
    hasLocalStorage = true; 
    } catch (e) { 
    hasLocalStorage = false; 
    } 
} 

class StorageUtilities { 
    setItem(key, value) { 
    if (hasLocalStorage) { 
     localStorage.setItem(key, value); 
    } else { 
     data[key] = value; 
    } 
    } 

    getItem(key) { 
    if (hasLocalStorage) { 
     return localStorage.getItem(key); 
    } 
    return data[key]; 
    } 

    removeItem(key) { 
    if (hasLocalStorage) { 
     localStorage.removeItem(key); 
    } else { 
     data[key] = null; 
    } 
    } 
} 

const storageUtilities = new StorageUtilities(); 

export default storageUtilities; 

 Смежные вопросы

  • Нет связанных вопросов^_^