1

ユーザーが入力したデータをテキストエリア内に保存しようとしていますpopup.html。データに対して jQuery を使用するwindow unloadと、同期する必要がありwindow ready、データを復元する必要があります。ただし、popup.htmlテキストエリアのコンテンツを開くと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);
}

background.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 に答える