Сегодня я боролся со странным поведением с локальным хранилищем, которое я сломал до простого сценария.Похоже, что браузер Chrome не синхронизирует localStorage
, если во время записи значения отображается окно предупреждения.
Открыты 2 вкладки браузера.
Tab A запрашивает файл read.html :
var item = localStorage.getItem('test');
console.log('item before alert', item);
alert('Pause!'); // don't close it before calling write.html
item = localStorage.getItem('test');
console.log('item after alert', item);
Окно предупреждения с надписью "Пауза!"не будет закрыт.
Другая вкладка B запрашивает файл write.html :
var item = (localStorage.getItem('test') || '') + 'a';
console.log('new item:', item);
localStorage.setItem('test', item);
Вы можете видеть, что значение было обновлено в localStorage вбраузеры (Chrome) Devtools, но только в одном из Tab B .
Это происходит только в Chrome.IE11 и Firefox работают как положено.У кого-нибудь есть подсказка, если это по замыслу или ошибка в Chrome?
С уважением, Маркус
Редактировать: Создан проект github с кодом: https://github.com/wondee/localStorage-bug
Обновление: После ответа Артемса я попытался дождаться отправки, и это действительно помогло с помощью следующего кода, добавленного в read.html после последнего console.log(..)
, изменения корректно отображаются:
setTimeout(() => console.log('item after 1s:', localStorage.getItem('test')), 1);