2012-03-11 8 views
7

La mia app jquerymobile richiede l'uso di localStorage e sessionstorage, ecc., Ho dato una richiesta agli utenti senza supporto cookie e dicevo loro di abilitare i cookie, ma se un utente ha abilitato la navigazione privata, questo crea il test dei cookie che sto facendo non funziona e hanno solo uno schermo ancora errato, qualcuno sa come posso testare se l'utente ha abilitato la navigazione privata?Come rilevare gli utenti su un iPhone con "Navigazione privata" abilitato?

Grazie

+0

se provo creare una voce localStorage quando l'utente si trova in questa modalità, gli insetti app, anche quando in prova cattura – Baconbeastnz

+0

Qual è l'errore specifico getta? – levi

+0

non lancia un errore, fallisce semplicemente in silenzio! – Baconbeastnz

risposta

10

non ho un Iphone per testare questo, ma nel desktop del browser Safari (in privato) in esecuzione la funzione qui sotto non intercettare l'errore e lo gestisce come previsto.

function storageEnabled() { 
    try { 
     localStorage.setItem("__test", "data"); 
    } catch (e) { 
     if (/QUOTA_?EXCEEDED/i.test(e.name)) { 
      return false; 
     } 
    } 
    return true; 
} 

if (!storageEnabled()) alert('localStorage not enabled'); 

Jsfiddle: http://jsfiddle.net/B9eZ5/

+0

IOS 7.0.3 riporta "QUOTAEXCEEDEDERROR" per il nome se qualcun altro decide di usarlo. – Ceres

+7

Suggerirei di ignorare il controllo del nome dell'errore all'interno del blocco catch: se localStorage.setItem genera un qualsiasi tipo di eccezione, questa funzione dovrebbe probabilmente restituire false. – bmode

Problemi correlati