Tôi đã không tìm thấy một cách phổ biến để đạt được giới hạn còn lại trên các trình duyệt mà tôi cần, nhưng tôi đã phát hiện ra rằng khi bạn đạt đến giới hạn, sẽ có một thông báo lỗi bật lên. Điều này tất nhiên là khác nhau trong mỗi trình duyệt.
Để tối đa hóa nó, tôi đã sử dụng tập lệnh nhỏ này:
for (var i = 0, data = "m"; i < 40; i++) {
try {
localStorage.setItem("DATA", data);
data = data + data;
} catch(e) {
var storageSize = Math.round(JSON.stringify(localStorage).length / 1024);
console.log("LIMIT REACHED: (" + i + ") " + storageSize + "K");
console.log(e);
break;
}
}
localStorage.removeItem("DATA");
Từ đó tôi nhận được thông tin này:
Google Chrome
- DOMException:
- mã: 22
- thông báo: "Không thực thi được 'setItem' trên 'Bộ nhớ': Đặt giá trị của 'dữ liệu' đã vượt quá hạn ngạch."
- tên: "QuotaExceededError"
Mozilla Firefox
- DOMException:
- mã: 1014
- thông báo: "Đã đạt đến kích thước tối đa của bộ nhớ liên tục"
- tên: "NS_ERROR_DOM_QUOTA_REACHED"
Safari
- DOMException:
- mã: 22
- thông báo: "QuotaExceededError: DOM Exception 22"
- tên: "QuotaExceededError"
Internet Explorer, Edge (cộng đồng)
- DOMException:
- mã: 22
- thông báo: "QuotaExceededError"
- tên: "QuotaExceededError"
Giải pháp của tôi
Cho đến nay, giải pháp của tôi là thêm một cuộc gọi bổ sung mỗi khi người dùng lưu bất cứ thứ gì. Và nếu trường hợp ngoại lệ bị bắt thì tôi sẽ nói với họ rằng họ sắp hết dung lượng lưu trữ.
Chỉnh sửa: Xóa dữ liệu đã thêm
Tôi quên đề cập rằng để điều này thực sự hoạt động, bạn sẽ cần phải xóa DATA
mục đã được đặt ban đầu. Sự thay đổi được phản ánh ở trên bằng cách sử dụng hàm removeItem () .