chrome.storage.sync不存储数据

时间:2013-07-30 12:38:17

标签: google-chrome google-chrome-extension

我正在尝试将用户输入的数据存储在popup.html的textarea中。在window unload上使用jQuery,应同步数据,并在window ready上恢复数据。但是,在打开popup.html时,textarea的内容为undefined。这是我在popup.html中加载的jQuery代码:

$(window).unload (
    function save() {
        var textarea = document.querySelector("#contacts").value;
        // Old method of storing data locally
        //localStorage["contacts"] = textarea.value;

        // Save data using the Chrome extension storage API.
        chrome.storage.sync.set({contacts: textarea}, function() {
            console.log("Contacts saved");
        });
    });

$(window).ready(
    function restore() {
        var textarea = document.querySelector("#contacts");
        // Old method of retrieving data locally
        // var content = localStorage["contacts"];
        chrome.storage.sync.get('contacts', function(r) {
            console.log("Contacts retrieved");
            var content = r["contacts"];
            textarea.value = content;
        });
    });

2 个答案:

答案 0 :(得分:4)

从popup.js你可以调用background.js文件中的方法来保存数据:

<强> popup.js:

addEventListener("unload", function(){
    var background = chrome.extension.getBackgroundPage();
    background.mySavefunction(data);
}

<强> background.js

function mySaveFunction(data){
    chrome.storage.sync.set(data, function(){
       console.log("Data saved.");
    });
}

答案 1 :(得分:1)

我找到了解决方案。而不是使用$(window).unload()我现在使用提交按钮,在关闭popup.html之前需要点击该按钮:

$("#save-button").click(function() {
        var textarea = document.querySelector("#contacts").value;
        var save = {};
        save["contacts"] = textarea;
        // Save data using the Chrome extension storage API.
        chrome.storage.sync.set(save, function() {
            console.log("Contacts saved");
        });
        $("#confirm").text("Contacts saved.").show().fadeOut(5000);
});