Я пытаюсь сохранить данные, которые пользователь вводит внутри текстового поля в popup.html
. Используя jQuery на window unload
, данные должны быть синхронизированы, а по window ready
данные должны быть восстановлены. Однако при открытии popup.html
содержание текстового поля составляет undefined
. Это код JQuery, который я погрузки в popup.html
:chrome.storage.sync не сохраняет данные
$(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;
});
});
Кажется, что после того, как «выгрузка» была запущена, слишком поздно успешно выполнить операцию «sync.set». Рассматривали ли вы постепенное сохранение данных или экспериментировали с 'onbeforeunload'? (Я не уверен, что 'onbeforeunload' тоже будет работать.) – apsillers
Использование' $ (window) .onbeforeunload() 'raises' Uncaught TypeError: Object [object Object] не имеет метода 'onbeforeunload''. – orschiro
Помимо технической проблемы использования события выгрузки для сохранения данных, вы, вероятно, не хотите в любом случае подвергать риску данные пользователя, ожидающие эту часть срока службы страницы. Браузер может потерпеть крах, пользователь может столкнуться с сбоем питания, кто знает. Лучше спроектировать для сохранения сразу после создания/изменения данных. – sowbug