@amorphine

Эмуляция события с local storage работает в Chrome, но не работает в Firefox — что не так?

Слушатель событий для local storage срабатывает при изменении в локальном хранилище на других вкладках и не срабатывает в текущей вкладке, поэтому было решено эмулировать событие. Следующий код работает в Chrome:
var e = document.createEvent( 'StorageEvent' );
e.initStorageEvent('storage');
window.dispatchEvent(e);

Но не работает в FF с ошибкой
TypeError: Not enough arguments to StorageEvent.initStorageEvent.
Следуя документации я дошел до вызова следующей конструкции
e.initStorageEvent('storage', true, false, storage_cell, 0, 0);

Однако хотя бы как-то заставить срабатывать не удалось.
  • Вопрос задан
  • 572 просмотра
Решения вопроса 1
@Myateznik
Правильная конструкция функции initStorageEvent:
void initStorageEvent(
  in DOMString typeArg,
  in boolean canBubbleArg,
  in boolean cancelableArg,
  in DOMString keyArg,
  in DOMString oldValueArg,
  in DOMString newValueArg,
  in DOMString urlArg,
  in nsIDOMStorage storageAreaArg
);

Рабочий пример:
var e = document.createEvent( 'StorageEvent' );
e.initStorageEvent('storage', true, false, 'key', 'oldValue', 'newValue', location.href, window.localStorage);
window.dispatchEvent(e);

Подробнее на Mozilla Developer Network (MDN), а также спецификация на WHATWG
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы