我是Chrome扩展程序的新手。我正在尝试创建一个基本扩展,每隔几秒就会在弹出页面中将值更新为输入字段。这是我目前的代码。
的manifest.json
{
"manifest_version": 2,
"name": "Test extension",
"version": "1",
"browser_action": {
"default_icon": "tl.png",
"default_popup": "layout.html"
},
"background": {
"scripts": ["jquery-3.2.1.min.js","addvalues.js"],
"persistent": false
},
"permissions": [
"alarms",
"tabs",
"webNavigation"
]
}
的layout.html
<html>
<head>
<script src="jquery-3.2.1.min.js"></script>
<script src="addvalues.js"></script>
</head>
<body>
<label for="pfvalue"> Portfolio value </label>
<input id="pfvalue" readonly style="border:0; color:#f6931f; font-weight:bold; padding-bottom: 10px;">
</body>
</html>
addvalues.js
$(function()
{
var i=0;
var portvalue;
function getData()
{
portvalue = i;
$("#pfvalue").val(portvalue);
i++;
console.log(portvalue);
}
getData();
chrome.alarms.create("fetch data",{periodInMinutes: 0.1});
chrome.alarms.onAlarm.addListener(getData);
});
当我将弹出页面打开足够长时间时,输入值确实会发生变化。但当我关闭它然后再次打开它时,弹出页面将重置为显示0的初始状态。我无法弄清楚为什么会发生这种情况。
控制台显示正确的portvalue值(即每6秒更新一次)。
提前致谢。
答案 0 :(得分:2)
chrome.storage.local.set
chrome.storage.local.get
,chrome.storage.onChanged
来检测更改"persistent" : false
,则无效)因为事件页面自上次激活后5秒后自动卸载,这意味着您当前的事件页面每6秒钟卸载1秒钟。这是浪费计算机资源:每次加载浏览器都需要解析它,编译它,优化它等等。