2014-12-20 4 views
2

Итак, я пытаюсь придумать метод получения «локального» файла не от пользователя, а от приложения или расширения Google Chrome, которое когда-либо было, так как я создаю оба. В основном, это мои настройки JSON, и мне нужен доступ к нему через мою страницу параметров, например, чтобы получить доступ к нему через мои скрипты содержимого, но все в порядке, и мне нужен доступ к нему через мою страницу фона.Настройки расширения Chrome/App Javascript

Образец Settings.json

{ 
    "defaultResults": "all", 
    "view":"full", 
    "results":"cur", 
    "count":"5", 
    "omni":{ 
     "h8":{ 
      "title":"Hello World", 
      "url":"www.someurl.com" 
     } 
    } 
} 

Так есть ли какие-либо реальные возможности для этого. Я не уверен, что Google уже реализовал собственную функцию, например, chrome.getAppFile("file URL"); или что-то в этом роде. Я бы предпочел не использовать Ajax внутри моего приложения для этого файла. И я бы предпочел не использовать его повсюду. Надеюсь, у кого-то здесь будет разумная идея, как я должен это делать.

+0

Взгляните на этот ответ: http://stackoverflow.com/a/3720372/3613282 Это именно то, что вы ищете? –

+0

Похож на простой способ сделать это. Я посмотрю на это. Можем ли мы отредактировать файл с помощью писателя FileSystem? – EasyBB

+0

Если вы хотите сохранить настройки для использования в будущем, почему бы просто не использовать API-интерфейс chrome.storage для хранения настроек JSON? https://developer.chrome.com/extensions/storage Для писателя FileSystem я не уверен, можете ли вы изменить файл, который «упакован» с расширением. До тех пор, как я знаю, FileSystem записывает в «временную изолированную» зону. –

ответ

3

Вы можете сделать это двумя способами, как описано в ответе this.

  1. Назначив свой объект JSON в переменную, сохранив сценарий как settings.js, и включая его в фоновом режиме страницы, следующим образом:

settings.js выглядит следующим образом:

var settings = {"param":value,...}; //Your JSON object 

затем на вашей исходной странице:

<script src="settings.js"></script> 
  1. Делая вызов AJAX для вашего settings.json с фоновой страницы:

    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = handleStateChange; // Implemented elsewhere. 
    xhr.open("GET", chrome.extension.getURL('/config_resources/config.json'), true); 
    xhr.send(); 
    

Как обсуждалось в комментариях, вы не можете использовать FileSystem API в расширениях хром. Доступ к нему имеют только хром-приложения. В любом случае, FileSystem API работает в sandboxed zone, поэтому я не уверен, что вы можете писать в файлы packed с расширением.

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