Chrome扩展程序:在发生事件时向表中添加行

时间:2016-01-16 16:52:04

标签: javascript google-chrome-extension

我有一个后台脚本background.js,会弹出一个html页popup.html,其中有一个脚本time.jscontent 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扩展程序的新用户,如果我在这里遗漏了一些内容,我真的很想学习。

1 个答案:

答案 0 :(得分:0)

你的假设是正确的。 popup.html每次都会加载。不可能“将它包含在后台”。你实际做的只是设置可以在manifest.json

中完成的网址

没有持久性,您必须在某处存储您的信息,并在每次弹出窗口加载时重新创建整个表。

将您的信息保存在localStoragechrome.storage或无数其他可用的持久性引擎中。