2014-12-20 55 views
2

因此,我試圖想到一種方法來獲取不是來自用戶的「本地」文件,而是來自Google Chrome應用程序或擴展程序,它可能是因爲我正在構建兩者。基本上,這將是我的設置JSON,我需要通過我的選項頁面訪問它,喜歡通過我的內容腳本訪問它,但沒關係,我需要通過我的背景頁面訪問它。Chrome擴展程序/應用程序設置Javascript

樣品Settings.json

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

因此,沒有人有這方面的任何實物期權。如果谷歌已經實施了本地功能,例如chrome.getAppFile("file URL");或者其他事情,我並不樂觀。我寧願不使用我的應用程序內的Ajax來處理此文件。我寧願不在任何地方使用它。所以希望這裏有人會有一個合理的想法,我應該如何去做這件事。

+0

看看這個答案:http://stackoverflow.com/a/372​​0372/3613282這是你在找什麼? –

+0

看起來像一個很好的簡單的方法來做到這一點。我會看看它。我們可以使用FileSystem編輯器編輯文件嗎? – EasyBB

+0

如果您想保存設置以供將來使用,爲什麼不使用chrome.storage API來存儲JSON設置? https://developer.chrome.com/extensions/storage對於FileSystem編寫器,我不確定您是否可以更改擴展名爲「packed」的文件。只要我知道,FileSystem寫入一個「臨時沙箱」區域。 –

回答

3

你可以用2種方法做到這一點,如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(); 
    

正如在評論中討論,您不能使用Chrome瀏覽器擴展文件系統API。只有Chrome應用才能訪問它。無論哪種方式,FileSystem API工作在sandboxed zone,所以我不知道你是否可以寫入帶有擴展名的文件packed