javascript - Chrome 扩展中的 popup.js 中的变量值是否会刷新?

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

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

但是,每当我选择某些内容时,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;
}

非常感谢!

最佳答案

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

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

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

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

关于javascript - Chrome 扩展中的 popup.js 中的变量值是否会刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37970216/

相关文章:

javascript - reCAPTCHA AJAX API 在 Safari 的模式对话框中无法一致工作

javascript - 转译为 es5 时 Jquery 不起作用

javascript - 钛合金主干及ACS

html - Flexbox 在 Firefox 中看起来完全不同

javascript - 是否可以对 Chrome 扩展进行 Base64 编码?

javascript - Jquery Mobile Filter系统,无法隐藏多个div

javascript - 如何覆盖 Chrome 应用程序中的文件?

javascript - 谷歌浏览器中的同位素模糊元素

javascript - Chrome 扩展 webRequest.onBeforeRequest

javascript - chrome.tabs.sendMessage 回调函数未被调用。为什么?