大量のメモリを使用するjavascript/html5 Webアプリをデバッグしています。時々、コンソールウィンドウにエラーメッセージが表示される
"uncaught exception: out of memory".
アプリ内でこのエラーを適切に処理する方法はありますか?
最終的には、これが最初に起こるのを防ぐために、この部分を書き直す必要があります。
LocalStorageのサイズを計算する必要があります。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;
}
最近、多くのJSを含むプロジェクトでJsonを送信するときに同じエラーメッセージが表示されましたが、解決策は、input type = "submit"属性をinput type = "button"に更新することでした。 input type = "button" ..>の使用には制限があり、ソリューションは奇妙に見えますが、アプリケーションにJS、Jsonデータを含むajaxがある場合は、試してみてください。ありがとう。
Firefoxで同じ問題に直面した後、ifループ内のローカルストレージにデータを設定する前であっても、HTMLページをリロードしようとしていたことがわかりました。そのため、その1つを処理し、IDが繰り返されているかどうかを確認する必要があります。
ただし、Chromeでも同じことがうまくいきました。たぶんChromeはよりインテリジェントです。