web-dev-qa-db-fra.com

Erreur de traitement "Exception de mémoire insuffisante" dans le navigateur?

Je suis en train de déboguer une application web javascript/html5 qui utilise beaucoup de mémoire. Je reçois parfois un message d'erreur dans la fenêtre de la console en disant 

"uncaught exception: out of memory".  

Existe-t-il un moyen pour moi de gérer gracieusement cette erreur dans l'application?

En fin de compte, je dois réécrire certaines parties de ce document pour éviter que cela ne se produise.

19
user547794

Vous devez calculer la taille de votre stockage local, Window.localStorage est saturé

comme solution est d'essayer d'ajouter quelque chose

var localStorageSpace = function(){
    var allStrings = '';
    for(var key in window.localStorage){
        if(window.localStorage.hasOwnProperty(key)){
            allStrings += window.localStorage[key];
        }
    }
    return allStrings ? 3 + ((allStrings.length*16)/(8*1024)) + ' KB' : 'Empty (0 KB)';
};

var storageIsFull = function () {
    var size = localStorageSpace(); // old size

    // try to add data
    var er;
    try {
         window.localStorage.setItem("test-size", "1");
    } catch(er) {}

    // check if data added
    var isFull = (size === localStorageSpace());
    window.localStorage.removeItem("test-size");

    return isFull;
}
5
Sergiu Gordienco

J'ai également reçu le même message d'erreur récemment lorsque je travaillais sur un projet comportant beaucoup de JS et envoyant Json, mais la solution que j'ai trouvée consistait à mettre à jour l'attribut input type = "submit" à input type = "button". Je sais qu'il existe des limites à l'utilisation de input type = "button" ..> et que la solution semble étrange, mais si votre application dispose de la fonction ajax avec JS, Json data, vous pouvez l'essayer. Merci.

4
safian syed

Face au même problème dans Firefox, puis plus tard, j'ai appris que j'essayais de recharger une page HTML avant même de configurer certaines données dans le stockage local à l'intérieur de la boucle if. Donc, vous devez vous occuper de celui-ci et également vérifier quelque part que l'ID se répète ou non.

Mais la même chose fonctionnait très bien dans Chrome. Peut-être que Chrome est plus intelligent.

0
Shasha