我正在尝试将用户输入的数据存储在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;
});
});
答案 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);
});