0

Я разрабатываю приложение Chrome, которое использует некоторые NPM. Когда зависимость в моем приложении использует window.localStoarge, есть способ, которым я могу сопоставить это с chrome.storage.local?Chrome window.localStorage vs. chrome.storage.local в зависимостях

Я хочу, чтобы переопределить window.localstorage с чем-то, что работает с chrome.storage.local вместо этого. Таким образом, мне не нужно заменять код в зависимостях, которые используют локальное хранилище.

Есть ли нпм или что-то, что может это сделать?

+0

Я думаю, что ваш запрос очень похож на [этот] (http://stackoverflow.com/questions/13612643/is-it-possible-to-override-local-storage-and-session-storage-separately- in-html5) (хотя спрашивают о других методах HTML5). – adjuremods

ответ

1

Первая проблема заключается в том, что API-интерфейсы chrome.storage являются асинхронными, а localStorage - синхронизацией. Теоретически возможно создать localStorage mock, поддерживаемый chrome.storage, но во многих случаях он будет ломаться.

Вторая проблема заключается в том, что chrome.storage работает с объектами, когда localStorage допускает только строки. Поэтому, если у вас будет какой-то код, который будет опираться на режим localStorage, у вас будут только хранить строки в chrome.storage.local, иначе у вас появятся очень странные ошибки.

Последняя проблема заключается в том, что вы не можете переназначить переменную window.localStorage в хромовых приложениях, так что единственный способ, чтобы обернуть код в себя исполняющее закрытие, а также обеспечить окно и LocalStorage издевается в качестве закрывающей переменных, например:

(function(window,localStorage){ 
    //some code relying on localStorage here 
})(windowObjectMock,windowObjectMock.localStorage); 

Это проще и более подвержено ошибкам переписать внешний код, чтобы использовать chrome.storage.local, а не пытаться обеспечить реализацию localStorage, поддерживаемую chrome.storage.local.

Смежные вопросы