2017-01-22 10 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]. – 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); 
    }); 
}