检测Chrome扩展弹出窗口何时关闭并保存数据

时间:2015-07-10 01:44:24

标签: javascript jquery google-chrome-extension popup window.onunload

当用户未按“保存”并关闭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');
}

但是,这有时只会起作用。我看过其他帖子,铬有一个bug:检测卸载事件。但是,我看到的问题很奇怪。当我没有我的后台页面检查视图打开时,导航离开并重新打开后,数据不会显示在弹出窗口的文本框中。但是,如果我的背景页检查视图打开,数据显示在文本框中...我是Chrome扩展开发的新手,有人可以帮我解决这个问题吗?

我还尝试了为消息传递设置端口的其他建议,但不确定如何正确执行此操作。 在background.js中:

 port.onDisconnect.addListener(function() {
    backgroundPage.console.log("Disconnected");
 })

我还需要其他什么吗?我在哪里设置端口和chrome.runtime.onConnect?这是什么代码?

0 个答案:

没有答案