1

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

$(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;
        });
    });
4

2 回答 2

4

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

popup.js:

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

背景.js

function mySaveFunction(data){
    chrome.storage.sync.set(data, function(){
       console.log("Data saved.");
    });
}
于 2013-11-25T22:13:57.667 回答
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);
});
于 2013-07-30T14:17:00.253 回答