Ошибка обработки "Исключение из памяти" в браузере?
Я отлаживаю веб-приложение javascript/html5, которое использует много памяти. Иногда я получаю сообщение об ошибке в окне консоли, говоря
"uncaught exception: out of memory".
Есть ли способ обработать эту ошибку внутри приложения?
В конечном счете мне нужно переписать части этого, чтобы это не происходило в первую очередь.
Ответы
Ответ 1
Вы должны рассчитать размер своего локального хранилища,
window.localStorage заполнен
в качестве решения заключается в попытке добавить что-то
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;
}
Ответ 2
Я также получил то же сообщение об ошибке недавно, когда работал над проектом, имеющим много JS и отправляя Json, но решение, которое я нашел, это обновить атрибут input type="submit" до input type="button". Я знаю, что существуют ограничения использования input type="button".. > , и решение выглядит странно, но если ваше приложение имеет ajax с данными JS, Json, вы можете попробовать. Спасибо.
Ответ 3
Столкнувшись с той же проблемой в Firefox, позже я узнал, что пытался перезагрузить HTML-страницу еще до установки некоторых данных в локальное хранилище внутри цикла if. Таким образом, вы должны позаботиться об этом, а также проверить, где ID повторяется или нет.
Но то же самое отлично работало в Chrome. Может быть, Chrome более умный.