2017-01-22 11 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); 
    }); 
} 
関連する問題