在 chrome 扩展程序中对弹出窗口.html进行更改并反映这些更改



我是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"
]
}   

布局.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>

添加值.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 的初始状态。我无法弄清楚为什么会发生这种情况。

控制台显示端口值的正确值(即每 6 秒更新一次的值(。

提前谢谢。

  1. 请务必阅读扩展体系结构概述:弹出窗口是一个单独的页面,仅在显示时存在。要查看其开发工具和控制台,请右键单击弹出窗口,然后单击检查。
  2. 背景/事件页面是一个单独的隐藏页面,具有自己的 DOM,因此无需在那里加载 jQuery。
  3. 您的后台页面可以增加值并通过chrome.storage.local.set存储它
  4. 您的弹出窗口.js(不同的脚本(可以在启动chrome.storage.onChanged时使用chrome.storage.local.get来检测更改
  5. 如果您每 6 秒唤醒一次事件页面("persistent" : false在您的 manifest.json 中(,则使用它毫无意义,因为事件页面在上次激活后 5 秒后自动卸载,这意味着您的事件页面当前每 6 秒卸载一次,持续 1 秒。这是对计算机资源的浪费:每次加载时,浏览器都需要解析、编译、优化等等。

最新更新