Клиент: Проверки превышения размера хранилища localStorage и sessionStorage

Для проверки превышения размера хранилища, вы можете попытаться добавить данные в хранилище, и, если операция вызывает исключение QuotaExceededError, это означает, что размер хранилища был превышен.

Вот пример функции на JavaScript, которая проверяет, не превышен ли размер хранилища:

function isStorageQuotaExceeded( storage )
{
	var isQuotaExceeded = false;

	try 
	{
		// Попытаться добавить временный элемент в хранилище
		var item = 'test';
		storage.setItem( item, item );

		// Если операция прошла успешно, удалить временный элемент
		storage.removeItem(item);

	} 
	catch (e) 
	{
		// Если возникло исключение, проверить, является ли оно ошибкой QuotaExceededError
		isQuotaExceeded = e instanceof DOMException 

		&& 

		(
			// все браузеры, кроме Firefox
			e.code === 22 || 

			// Firefox
			e.code === 1014 || 

			// все браузеры, кроме Firefox
			e.name === 'QuotaExceededError' || 

			// Firefox
			e.name === 'NS_ERROR_DOM_QUOTA_REACHED'); 
	}

	return isQuotaExceeded;
}

if( isStorageQuotaExceeded( localStorage ) )
{
	console.log( 'Размер localStorage превышен' );
}

if( isStorageQuotaExceeded( sessionStorage ) )
{
	console.log( 'Размер sessionStorage превышен' );
}

Лимиты для localStorage и sessionStorage могут варьироваться в зависимости от браузера, его версии и настроек пользователя. Однако общепринятое значение для большинства современных браузеров составляет 5-10 МБ на домен для localStorage и sessionStorage. Лимит применяются к каждому домену. Это означает, что если у вас есть два разных сайта, каждый из них сможет сохранять до установленного лимита данных в localStorage или sessionStorage. Пользователи могут изменить эти лимиты в настройках своего браузера или полностью отключить Web Storage. Некоторые режимы приватного просмотра также могут временно отключить или ограничить использование Web Storage.

Клиент LocalStorage SessionStorage 1.3 г. Просмотров: 908
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.