Прежде чем начать - да, я знаю, что есть несколько ответов на подобные вопросы, но ни один из них не является полным. То есть Вы не можете использовать информацию в ответах без документов, которые не были включены в вопрос.
Поэтому я пытаюсь настроить скаффолд для использования в расширениях 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 (показывает поле с кнопкой sumbit)
<!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, и изменить значок.
Любая помощь будет очень признательна. Я уже два дня бьюсь головой об стену, и это кажется очень простым вопросом.