5

当用户不按保存并且 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?这个代码是什么?

4

0 回答 0