感谢您的阅读。
我坚持在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!';
}
非常感谢您的帮助!
〜布赖恩
答案 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,所以不要害怕更多地使用它,如果您使用它,请不要忘记包括它。