从后台调用弹出窗口中的函数。 (谷歌Chrome扩展程序)

时间:2012-03-03 21:40:59

标签: javascript google-chrome-extension

我正在使用Google Chrome扩展程序。我的popup.js中有一个函数,用于填充表 update_table 。我想从发送重要数据的background.js中调用该函数。问题是background.js上的update_table没有定义,如果我将代码复制到该文件中,请不要更新popup.html上的表。

popup.js

function update_table(content, morecontent){
  if (!document.getElementsByTagName) return;
      tabBody=document.getElementsByTagName("tbody").item(0);
      row=document.createElement("tr");
      cell1 = document.createElement("td");
      cell2 = document.createElement("td");
      textnode1=document.createTextNode(content);
      textnode2=document.createTextNode(morecontent);
      <!-- ... -->
}

popup.html

<!doctype html>
<html>
<head>
<title>Popup Page</title>
<script src="./popup.js" type="text/javascript"></script>
</head>
<body>
   <table border='1' id='mytable'>
      <tbody>
        <tr><td>22</td><td>333</td></tr>
        <tr><td>22</td><td>333</td></tr>
      </tbody>
   </table>
</body>
</html>

background.js

chrome.webRequest.onCompleted.addListener(
    function(request) {
        update_table(request.type, request.url);
    },
    {urls: ["*://*/*"]},
    ["responseHeaders"]
);

background.html

<!doctype html>
<html>
<head>
   <title>Background Page</title>
   <script src="./background.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

阅读this post,我只是为另一个人回答这个问题。

最好看看chrome.extension.* API。 我将在明天的某个时间在GitHub上发布一个例子,我可以告诉你。

希望这有帮助。

<强>更新

Here you go.这是我创建的套接字脚本,允许后台页面和弹出窗口之间的连续通信。 README中提供了一个示例。我目前使用这个扩展,每个实例最多传递100个项目,它完美无缺。 :P