0

感谢您的阅读。

我被困在我的 background.js 和 popup.html 之间传递信息!

在此示例中,我尝试从 popup.html 调用 background.js 中的 testRequest。我查看了数十个如何执行此操作的示例并编写了尽可能多的解决方案,但我没有成功......这是我尝试过的解决方案之一:

弹出.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>

背景.js

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

非常感谢您的帮助!

〜布赖恩

4

1 回答 1

3

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

弹出窗口.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);
  });
});

背景.js

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

内联代码是不允许的,popup.html所以我们将它全部移动到一个外部文件,你已经在使用 jQuery,所以不要害怕使用它,如果你正在使用它,不要忘记包含它。

于 2013-04-05T21:11:39.250 回答