Chrome扩展弹出窗口 - 从background.js函数设置DIV文本

时间:2013-04-05 20:39:17

标签: google-chrome-extension

感谢您的阅读。

我坚持在background.js和popup.html之间传递信息!

在这个例子中,我试图从popup.html中调用background.js中的testRequest。我已经看了几十个如何做到这一点并编写了许多解决方案的例子,但我还没有成功......这是我尝试过的解决方案之一:

Popup.html:

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <script type="text/javascript"  src="background.js">                
            $(document).ready(function () {
                document.getElementById("test").textContent = chrome.extension.getBackgroundPage.testRequest();
            });
    </script>
    <div id="test"></div>
</body>
</html>

background.js

var testRequest = function(){
return 'yay!';
}

非常感谢您的帮助!

〜布赖恩

1 个答案:

答案 0 :(得分:3)

您可以使用简单的消息传递来执行此操作。例如:

<强> Popup.html

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script src="jquery.min.js"></script>
    <script src="popup.js"></script>
  </head>
  <body>
    <div id="test"></div>
  </body>
</html>

<强> popup.js

$(function() {
  chrome.runtime.sendMessage({method:"testRequest"},function(reply){
    $('#test').text(reply);
  });
});

<强> background.js

chrome.runtime.onMessage.addListener(function(message,sender,sendRepsonse){
  if(message.method == "testRequest")
    sendResponse(testRequest());
});
function testRequest(){
  return "yay!";
}

popup.html中不允许使用内联代码,因此我们将其全部移动到外部文件,您已经使用了jQuery,所以不要害怕更多地使用它,如果您使用它,请不要忘记包括它。