Определить, когда всплывающее окно расширения 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? Какой код для этого?

0 ответов

Другие вопросы по тегам