2015-10-18 2 views
4

Я включил Google в моем зарегистрировались, используя веб-приложение this docs, но когда я пытаюсь загрузить на сайт из Safari в частном режиме я всегда получаю следующее сообщение об ошибке в консолиGoogle для входа в аккаунт не работает в сафари частном режиме

QuotaExceededError: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota. 
setItem4187590794-idpiframe.js:19:293 
g4187590794-idpiframe.js:19:293 
Ea4187590794-idpiframe.js:30 
(funzione anonima)4187590794-idpiframe.js:33 
onreadystatechange4187590794-idpiframe.js:11:477 

I знаете, что сафари в приватном режиме не позволяет писать в localStorage, но разве нет обходного пути, чтобы позволить google работать в личном режиме?

Благодаря

ответ

0

Не позволяйте LocalStorage/sessionStorage SetItem бросить ошибки в Safari Режим приватного просмотра

Посмотрите на это: https://gist.github.com/philfreo/68ea3cd980d72383c951

// Safari, in Private Browsing Mode, looks like it supports localStorage but all calls to setItem 
// throw QuotaExceededError. We're going to detect this and just silently drop any calls to setItem 
// to avoid the entire page breaking, without having to do a check at each usage of Storage. 
if (typeof localStorage === 'object') { 
    try { 
     localStorage.setItem('localStorage', 1); 
     localStorage.removeItem('localStorage'); 
    } catch (e) { 
     Storage.prototype._setItem = Storage.prototype.setItem; 
     Storage.prototype.setItem = function() {}; 
     alert('Your web browser does not support storing settings locally. In Safari, the most common cause of this is using "Private Browsing Mode". Some settings may not save or some features may not work properly for you.'); 
    } 
} 

Safari Private Browsing известно причины таких вопросов. Самый простой способ исправить это - это изменить функцию localStorage.

Попробуйте

function isLocalStorageNameSupported() 
{ 
    var testKey = 'theTestKey', storage = window.sessionStorage; 
    try 
    { 
     storage.setItem(testKey, '1'); 
     storage.removeItem(testKey); 
     return localStorageName in win && win[localStorageName]; 
    } 
    catch (error) 
    { 
     return false; 
    } 
} 

Вы можете найти подробную документацию и другие решения здесь: https://github.com/marcuswestin/store.js/issues/42

+0

Проблема находится внутри Google JS, которая не загружена правильно и Google для входа в аккаунт не работает. Я решил не загружать этот JS, если localStorage недоступен – GUL

+0

@GUL Если бы вы ... что вы сделали с входом Google без API Google JS? Если у вас есть код на Git или что-то в этом роде, все будет хорошо. Заранее спасибо. – JackW327

+0

Извините, но я не могу показать весь код, но я могу объяснить, что я делаю. Если localStorage недоступен, я не загружаю API Google JS. Чтобы проверить, доступен ли localStorage, я просто пытаюсь записать значение, если оно выдает исключение, чем оно недоступно – GUL

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

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