Клиент: Проверка доступности localStorage и sessionStorage в браузере

Проверка доступности localStorage и sessionStorage в браузере пользователя может быть полезна, если вы хотите убедиться, что браузер пользователя поддерживает эти функции или если вы хотите обработать ситуацию, когда эти функции отключены или недоступны.

# Функция пытается записать, а затем удалить элемент из хранилища. 
# Если этот процесс происходит без ошибок, то можно сделать вывод, что хранилище доступно для использования. 
# Если возникает исключение DOMException, это указывает на то, что хранилище недоступно.
function storageAvailable( type )
{
	var storage;
	try 
	{
		storage = window[type];
		var x = '__storage_test__';
		storage.setItem( x, x );
		storage.removeItem( x );
		return true;
	}
	catch(e)
	{
		return e instanceof DOMException && (

			// Проверяем код для ошибки QuotaExceededError 
			// все, кроме Firefox
			e.code === 22 ||
			// Firefox
			e.code === 1014 ||

			// Если код ошибки не доступен, то проверяем имя исключения
			// QuotaExceededError - это имя ошибки в большинстве браузеров, когда превышен лимит хранилища, 
			// а 'NS_ERROR_DOM_QUOTA_REACHED' - это то же самое для Firefox			
			// все, кроме Firefox
			e.name === 'QuotaExceededError' ||
			// Firefox
			e.name === 'NS_ERROR_DOM_QUOTA_REACHED') 

			&&

			// Проверяем, есть ли что-то уже сохранено в хранилище. 
			// Если это истинно, ошибка QuotaExceededError признается валидной. 
			// Ошибки QuotaExceededError не имеют смысла, если хранилище пустое, 
			// поскольку это указывает на то, что проблема, скорее всего, не в ограничении размера хранилища.
			(storage && storage.length !== 0);
	}
}

if( storageAvailable( 'localStorage' ) )
{
	// Можно использовать localStorage
}
else 
{
	// localStorage недоступно
}

if( storageAvailable( 'sessionStorage' ) )
{
	// Можно использовать sessionStorage
}
else 
{
	// sessionStorage недоступно
}

QuotaExceededError: DOM Exception 22 - это ошибка, которую браузеры (кроме Firefox) выбрасывают, когда вы пытаетесь сохранить больше данных в Web Storage (localStorage или sessionStorage), чем разрешено. Браузеры обычно имеют определенный лимит на количество данных, которые вы можете сохранить в Web Storage. Этот лимит может варьироваться в зависимости от браузера и настроек пользователя, но обычно он составляет несколько мегабайт. Если вы попытаетесь сохранить данные, превышающие этот лимит, вы получите ошибку QuotaExceededError. Это помогает предотвратить злоупотребление этой функцией за счет сохранения чрезмерно больших объемов данных. Исключение DOM 22 - это просто другое имя для этой ошибки. Некоторые браузеры используют коды ошибок для идентификации различных типов исключений DOM, и 22 - это код для QuotaExceededError.

Код исключения 1014 относится к ошибке QuotaExceededError в браузере Firefox. Когда лимит хранилища превышен (например, при использовании localStorage или sessionStorage), браузер выбрасывает исключение QuotaExceededError. В большинстве браузеров это исключение имеет код 22, но Firefox использует код 1014 для этой же ошибки. Это означает, что если вы видите исключение с кодом 1014 в Firefox, это означает, что вы пытались сохранить в localStorage или sessionStorage больше данных, чем разрешено. Обычно это ограничение составляет несколько мегабайт, но оно может варьироваться в зависимости от настроек браузера и операционной системы.

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

Комментарии

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