Вы можете использовать файловый API HTML5 (navigator.webkitTevenStorage или устаревший устаревший window.webkitStorageInfo с параметром TEMPORARY) для сохранения настроек в файле.Эта часть является асинхронной, но вы можете сделать это из фона, страницы настроек или всплывающего окна.Этот API может измениться на вас, так как он еще не стандартизирован.Поскольку это временное хранилище, вашей фоновой странице может потребоваться постоянная работа, чтобы Chrome не удалял файл.
Затем из сценария содержимого вы можете использовать синхронный XMLHttpRequest для получения файла из "filesystem:" + chrome.extension.getURL ("временный /" + имя файла).Префикс «filesystem:» в URL-адресе довольно важен.
Лучше всего использовать API-интерфейс chrome.storage (или localStorage) для своих настроек и перехватить событие onChanged, чтобы обновить временный файл.Если вам нужно перезагрузить страницу после изменения настроек, вы захотите сделать это в обратном вызове из операции записи FileSystem, чтобы вы знали, что скрипт содержимого может увидеть это изменение.
Это не требует каких-либоспециальные разрешения в манифесте.Я лично проверил это в Chrome 35, но я знаю, что это работало и в более ранних версиях.Однако я не знаю требования к минимальной версии.Я помню упоминание о регрессе, связанном с изменением безопасности, в Chrome 33, где он не работал, но был быстро исправлен.
Я видел несколько других обходных путей (например, перенаправление на URL-адрес BLOB-объекта или URI данных из onBeforeWebRequest) для настройки параметров в сценариях содержимого до запуска собственных сценариев страницы, но, насколько я могу судить, все они были намеренно повреждены в последних версиях Chrome из-за общих улучшений безопасности XSS и расширений.