JSFiddle - React, Tailwind, and code Playground
HTML
<pre id="scene"></pre>
JavaScript
var timeStart = Date.now();
var countKey, countValue, amountLeft, itemLength, error;
var leftCount = 3;
var occupied = leftCount;
var i = 0;
var data = "m";
while (true) {
try {
localStorage.setItem('testKey' + i, data);
data = data + data;
} catch (e) {
break;
}
i++;
}
while (true) {
try {
localStorage.setItem('testKey' + i, '11111111112222222222333333333344444444445555555555666661111111111222222222233333333334444444444555555555566666');
} catch (e) {
var error = e;
break;
}
i++;
}
for (var i = 0; i < localStorage.length; i++) {
countKey = localStorage.key(i);
countValue = localStorage.getItem(localStorage.key(i));
itemLength = countKey.length + countValue.length;
//if the key is one of our 'test' keys count it separately
if (countKey.indexOf("testKey") === 0) {
leftCount = leftCount + itemLength;
}
occupied = occupied + itemLength;
};
occupied = (((occupied * 16) / (8 * 1024)) / 1024).toFixed(2);
amountLeft = (((leftCount * 16) / (8 * 1024)) / 1024).toFixed(2);
//iterate through all localStorage keys and remove 'testKeys'
Object.keys(localStorage).forEach(function (key) {
if (key.indexOf("testKey") === 0) {
localStorage.removeItem(key);
}
});
var time = Date.now() - timeStart;
var message = [
'Finished in: ' + time + 'ms',
'total localStorage: ' + occupied + 'Mb',
'localStorage left: ' + amountLeft + 'Mb'
].join('\n');
document.getElementById('scene').innerHTML = message;