2017-09-04 1 views
0

J'utilise ng-storage pour stocker JSON qui conserve les cases à cocher cochées et diverses valeurs de formulaire (lot de formulaires) en cas d'actualisation. Il y a un certain scénario dans lequel le stockage local est plein et le rechargement d'une page de résultats dans:Détection d'un stockage HTML5 complet (ng-storage)

Bad message 431 Motif: tête de demande Les champs trop grand

J'ai trouvé aucun moyen de capturer et gérer cette réponse à effacer mon stockage dans ce scénario. Si elle aide c'est mon service:

angular.module('app') 
    .service('CookieService', function($localStorage, SharedService) { 
    $localStorage[SharedService.activeOffer.id] = $localStorage[SharedService.activeOffer.id] || {}; 
    var localStorage = $localStorage[SharedService.activeOffer.id]; 

    return { 
     localStorage: localStorage, 
     setSession: function(id, data) { 
     checkLocalStorageUsage(); 
     if (typeof data != "string") { 
      data = JSON.stringify(data); 
     } 
     localStorage[id] = data; 
     }, 
     getSession: function(id) { 
     if (localStorage[id]) { 
      return JSON.parse(localStorage[id]); 
     } 
     }, 
     checkSession: function(id) { 
     return (!!(localStorage[id] && localStorage[id].length)); 
     }, 
     removeSession: function(id) { 
     delete localStorage[id]; 
     }, 
     removeAllSessions: function(id) { 
     $localStorage.$reset(); 
     } 
    }; 
    }); 

Répondre

0

Vous pouvez essayer un try-catch pour vérifier si la valeur a été ajouté ou non, quelque chose comme:

function addValueToLocalstorage(key, value) { 
    try { 
     localStorage.setItem(key, value); 
     return true; 
    } catch (e) { 
     return false; 
    } 
} 

Si le retour de la fonction fausse et le localstorage est actif, alors il y a beaucoup de chances que ce soit parce que vous avez atteint le quota. Vous pouvez essayer d'analyser la chaîne du message d'erreur dans la capture, mais elle n'est pas persistante entre les navigateurs.