如何指示Chrome扩展程序每次打开时都不会重新加载我的HTML?

时间:2014-10-16 06:55:24

标签: google-chrome-extension

我正在开发Chrome扩展程序,我需要它在每次打开时都保持其状态。

例如,在关闭并重新打开扩展程序后,我有一个输入元素需要保持填充状态。

this page上,我找到了清单的一个例子。它引导我将以下内容添加到我的清单中,但它没有起作用:

"background": {
 "persistent": true,
"page": "popup.html"
}

有没有办法在开口之间保持扩展状态?

1 个答案:

答案 0 :(得分:0)

首先,请阅读Chrome扩展程序的Architecture Overview

弹出页面是"一次性"只要弹出窗口打开就存在的页面;你不能影响那个。一旦弹出窗口失去焦点,它的HTML文档就会被销毁。

相比之下,背景"页面" (通常没有HTML标记,因此只要Chrome运行,就会存在"scripts"而不是"page")与"persistent": true的典型用法。因此,它可以保存状态信息。但它是一个看不见的页面。

正确的方法是使弹出页面动态化,将其状态保存到后台和/或各种存储API,并在打开时恢复状态。

最小例子:

// popup.js
// Suppose #myInput is a text input
document.addEventListener('DOMContentLoaded', function() {
  chrome.storage.local.get({setting: "default value"}, function(data) {
    var inputElement = document.getElementById("myInput");
    inputElement.value = data.setting;
    inputElement.addEventListener("input", function(e) {
      chrome.storage.local.set({setting: e.target.value});
    });
  });
});