2017-01-22 126 views
0
var userCharacters = []; 

window.onkeyup = function(e){ 

userCharacters.push(e.key); 

chrome.storage.sync.set({'userInput':userCharacters}) 

if(e.key == "Shift") 
    chrome.storage.sync.get('userInput',function(userText){ 
    alert(userText.userInput); 
    }); 

} 

我試圖存儲和檢索標記爲'userInput'的數據,但每次打開新頁面或標籤時,它都會重置userText.userInput值。有人可以解釋爲什麼會發生這種情況,以及我們如何解決這個問題?爲什麼加載新頁面時Chrome.storage.sync存儲會重置?

+0

嘗試用'alert(userText);' –

+0

不幸的是,那只是返回[object Object]。 – user2707299

+0

對不起,我不是你的意思的100%。無論如何,你可以提供一個具體的例子嗎? – user2707299

回答

4

每次加載新頁面時,userCharacters[]陣列被定義爲[],然後添加字符。當您運行chrome.storage.sync.set({'userInput':userCharacters})時,現有數據將被覆蓋。
要解決此問題,請在用戶添加更多內容之前將已存儲的數據加載到userCharacters中。

var userCharacters; 
chrome.storage.sync.get('userInput',function(userText){ 
    userCharacters = userText.userInput; 
}); 
window.onkeyup = function(e){ 
    userCharacters.push(e.key); 
    chrome.storage.sync.set({'userInput':userCharacters}) 
    if(e.key == "Shift") 
    chrome.storage.sync.get('userInput',function(userText){ 
     alert(userText.userInput); 
    }); 
} 
相關問題