我有一个后台脚本background.js
,会弹出一个html页popup.html
,其中有一个脚本time.js
。 content script
监控存储网址的onbeforeunload
事件(以及其他数据)。 time.js
脚本加载存储的数据并将它们放在表中。
background.js
chrome.browserAction.setPopup({popup:"popup.html"});
popup.html
<!DOCTYPE html>
<html lang="en">
<body>
<div id='Div'></div>
<table id="dataTable"></table>
<script src="time.js"></script>
</body>
</html>
time.js
loadData();
function loadData()
{
chrome.storage.local.get(["HRS","MINS","SECS","URLS"],
function(result)
{
var row = document.createElement('tr');
var col1 = document.createElement('td');
var col2 = document.createElement('td');
row.appendChild(col1);
row.appendChild(col2);
col1.innerHTML = result.URLS;
col2.innerHTML = result.HRS+":"+result.MINS+":"+result.SECS;
document.getElementById("dataTable").appendChild(row);
});
}
但是,每次点击popup.html
图标时,browser action
只能显示一行(我想是第0行)。我想将行附加到现有表。
我看过几篇关于创建和追加新行的帖子,但没有一篇有效。我甚至试图存储RowId
并在事件正常但事件增加但row=table.insertRow(RowId)
给出同样的问题。
我想知道为什么会发生这种情况以及可能的解决方案。
编辑:我认为问题可能是因为每次点击popup.html
按钮(重置上一张桌子)时都会加载Browser Action
。但是,我已经将弹出窗口包含在后台脚本中,并且一旦加载扩展(一个实例),后台脚本就开始在浏览器的后台运行。所以我认为popup.html
也应该采用相同的方式,并且添加到其中的任何段落/ table_row必须保持不变。
PS-我是Chrome扩展程序的新用户,如果我在这里遗漏了一些内容,我真的很想学习。
答案 0 :(得分:0)
你的假设是正确的。 popup.html
每次都会加载。不可能“将它包含在后台”。你实际做的只是设置可以在manifest.json
没有持久性,您必须在某处存储您的信息,并在每次弹出窗口加载时重新创建整个表。
将您的信息保存在localStorage
,chrome.storage
或无数其他可用的持久性引擎中。