Определить, когда всплывающее окно расширения Chrome закрывается, и сохранить данные
Я пытаюсь предотвратить потерю информации, когда пользователь не нажимает Сохранить, а всплывающее окно с расширением chrome закрывается или переходит на другую вкладку. Я сохраняю текст из всплывающего окна и помещаю его обратно, как только оно снова открывается.
Итак, у меня есть этот код для обнаружения закрытых всплывающих окон в background.js:
var backgroundPage = chrome.extension.getBackgroundPage();
window.addEventListener("unload", function() {
if(saved === false) {
var savedText = document.getElementById('textbox').value;
localStorage.setItem('text', savedText);
backgroundPage.console.log(localStorage.getItem('text'));
}
}, true);
В другой функции, как только всплывающее окно загружается снова, я возвращаю данные
if(localStorage.getItem('text') !== "") {
document.getElementById('text').value = localStorage.getItem('title');
}
Но это работает только иногда. Я видел другие сообщения о том, что в chrome есть ошибка, связанная с обнаружением событий выгрузки. Но проблема, которую я вижу, странная. Когда у меня не открывается фоновая страница просмотра, данные не отображаются в текстовом поле во всплывающем окне после перемещения и повторного открытия. Но если у меня открыта фоновая страница просмотра, данные отображаются в текстовом поле... Я новичок в разработке расширений Chrome, может кто-нибудь помочь мне с этой проблемой?
Я также попробовал другие предложения по настройке портов для обмена сообщениями, но не уверен, как это сделать правильно. В background.js:
port.onDisconnect.addListener(function() {
backgroundPage.console.log("Disconnected");
})
Нужно ли что-нибудь еще? Где я могу настроить порт и chrome.runtime.onConnect? Какой код для этого?