是否在Chrome扩展程序的popup.js中刷新了变量值?

时间:2016-06-22 13:55:41

标签: javascript google-chrome google-chrome-extension popup google-chrome-app

我正在开发Chrome扩展程序,尝试从一个页面收集所有选定的文本。我使用内容脚本来捕获所选文本并将其传递给popup.js并将其附加到数组中,然后将其显示在popup.html中,以便每次用户单击弹出窗口时都可以看到他们已选择的内容。 / p>

然而,每当我选择某个东西时,popup.html会显示它,但我之前选择的所有文本都已消失。并且数组始终保持1的长度。这使我想到每次单击它时弹出页面都会刷新。

我无法理解,你能帮助我吗?我想知道的是:如果每次单击弹出窗口都会刷新,我应该如何保存变量;如果它没有,那么什么是我的问题。

我的popup.js代码如下:

var totalSelection = [];
var selectionDisplay = '';

if (chrome.extension.getBackgroundPage().newSelectedText !== undefined) {
    text = chrome.extension.getBackgroundPage().newSelectedText;
    addTextInArray(text);
    addTextToPopup();
    if (totalSelection.length > 1)
        console.log("length: " + totalSelection.length.toString() + "\n" + totalSelection.toString());
}

function addTextInArray(message) {
    totalSelection.push(message);
    selectionDisplay += "<p>" + message + "</p>";
}

function addTextToPopup() {
    document.getElementById("container2").innerHTML = selectionDisplay;
}

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

每次重新打开弹出页时,弹出页都会刷新。它们只是html个文件。它们没有理由在后台保持打开状态(你有background pages)。

您可以执行以下操作之一:

  • 使用storage,您需要为manifest.json文件添加其他权限。
  • 将您的数组存储在后台脚本中,并使用messaging传递数据

注意:在收集用户的敏感数据时要小心。 Google对此有严格的政策,如果您计划发布扩展程序,最好向用户说明您正在收集数据。另外,请确保您符合single purpose policy