![](/img/trans.png)
[英]Chrome extension: Activate and execute background.js on click from popup.js
[英]Send a variable from popup.js to background.js in Chrome Extension
在开始之前-是的,我知道对类似问题有一些答案,但没有一个是完整的。 也就是说,如果没有问题中未包含的文档,您将无法在答案中使用信息。
因此,我尝试设置一个可在chrome扩展程序中使用的脚手架,在该扩展程序中,我可以在弹出窗口的字段中键入内容并将其存储在后台。 然后,我可能会使用此变量在字段上调用API(例如,针对气象应用的邮政编码)。
我在这里要做的只是将徽章文本设置为在弹出窗口中输入的消息。
我已经尝试在此问题的其他答案中使用代码,但是我无法使任何事情正常工作,这就是为什么我将其保持得非常简单。
manifest.json (这里没什么疯狂的):
{
"name": "Popup to Background Communication",
"description": "Chrome Extension Scaffolding for Communication between
the popup and the background script.",
"manifest_version": 2,
"version": "1.0",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_popup": "popup.html"
},
"permissions": [
"storage",
"activeTab"
]
}
popup.html (显示带有求和按钮的字段)
<!doctype html>
<html>
<div class="field_entry">
<p>Enter Message to be Sent:</p>
<form id = "messageForm">
<input type="text" id="messageToSend" />
<input type="submit"/>
</form>
</div>
</html>
popup.js (侦听提交并从后台调用函数):
function sendToBackground() {
var messageFromForm = document.getElementById("messageToSend");
var background = chrome.extension.getBackgroundPage();
background.setBadgeToMessage(messageFromForm);
}
document.getElementById('messageForm')
.addEventListener('submit', sendToBackground);
background.js (保留变量以从弹出窗口更改为消息)
var badge = "0";
function setBadgeToMessage(msg){
badge = msg;
chrome.browserAction.setBadgeText(badge + "");
};
我提交时没有任何反应。 我认为这是错误的,我正在访问来自popup.js的变量,该变量是background.js的本地变量,但似乎至少应该更改复制到popup.js的版本并更改徽章。
任何帮助将不胜感激。 我已经在这上面呆了两天了,这似乎是一个非常简单的问题。
你快到了。 但是,您不能将Element作为消息传递给Chrome API。 browserAction.setBadgeText
的文档指定一个对象。 这样做:
function sendToBackground() {
var messageFromForm = document.getElementById("messageToSend").value;
chrome.runtime.getBackgroundPage((background) => background.setBadgeToMessage(messageFromForm));
...
}
...
function setBadgeToMessage(msg){
badge = msg;
chrome.browserAction.setBadgeText({ text : badge });
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.