2012-06-03 269 views
3

構建我的Google Chrome瀏覽器擴展程序時,遇到存儲其設置的問題。我在用戶點擊browserAction圖標後創建了一個在選項卡中打開的設置頁面。此頁面具有用於設置我的擴展的UI,並且它可以將設置存儲到localStore中。但是我的擴展的後臺頁面,它應該讀取這些設置,沒有任何localStore。Chrome擴展程序商店

我應該在哪裏存儲擴展設置,以便它可以從瀏覽器的任何地方訪問並永久保存?

感謝您的幫助......

+1

其實,你的背景頁面應該存儲設置並將它們讀出來供各種請求它的設備使用。即使配置頁面也必須從後臺頁面獲取/設置設置。可能是http://stackoverflow.com/questions/1961544/communication-between-the-options-page-and-background-page-in-google-chrome可以提供幫助。 – SuperSaiyan

回答

1

如果你想使用你的backgroundpage即暫時存儲數據:

// in your backgroundpage 
// Set a value 
window['yourvalue']=123; 
// Get a value 
alert(window['yourvalue']); 

// in any other page (options/popup/message/whatever) 
var bg=chrome.extension.getBackgroundPage(); 
// Set a value 
bg['yourvalue']=123; 
// Get a value 
alert(bg['yourvalue']); 

我總是在我的擴展使用這些功能:

var bg=chrome.extension.getBackgroundPage(); 
// Save data 
function save(key, val) { 
    bg[key]=val; 
    var data={}; 
    var tmp=localStorage.getItem("MyPlugin"); 

    if(tmp!=null&&tmp.indexOf("{")>-1&&tmp.indexOf("}")>-1) 
    { 
     data=JSON.parse(tmp); 
    } 
    data[key]=val; 
    localStorage.setItem("MyPlugin", JSON.stringify(data)); 
} 

// Restore the data 
var data={}; 
var tmp=localStorage.getItem("MyPlugin"); 

if(tmp!=null&&tmp.indexOf("{")>-1&&tmp.indexOf("}")>-1) 
{ 
    data=JSON.parse(tmp); 
    for (var key in data) { 
     if (data.hasOwnProperty(key)) { 
      bg[key]=data[key]; 
     } 
    } 
}