По сути, я пытаюсь отправить сообщение из popup.js, захватив значения из полей ввода и onMessage в content_script, чтобы назначить эти значения из этой локальной области в глобальную область.Я не могу сделать это!Я могу закрыть весь код в функции onMessage, но затем, чтобы перейти к следующей функции кода, я должен продолжать нажимать сохранить в расширении Chrome.Если кто-то знает этот способ лучше, чем я, с расширениями Chrome, а что нет, просмотрите мой код и направьте меня к прогрессу.Я занимаюсь этим уже неделю, и моя голова вот-вот отправится!
Я попытался заключить весь код в функцию onMessage в content_script.Я попытался перевернуть, какие файлы .js отправляют сообщение и пытается отправить поля ввода из расширения в качестве ответа.Я пытался исключить sendMessage из функции .click DOM.Рассмотрено API обмена сообщениями в расширении Google Chrome и я озадачен.
файл content.js
chrome.runtime.onMessage.addListener (
function(request) {
item_name = request.name;
item_color = request.color;
item_category = request.category;
item_size = request.size;
console.log(item_name);
console.log(item_color);
console.log(item_category);
console.log(item_size);
});
var url = window.location.href;
var i;
var item_category;
var item_name;
var item_color;
var item_size;
console.log(item_name);
console.log(item_color);
console.log(item_category);
console.log(item_size);
файл popup.js
document.getElementById("save_input").onclick = function() {
var item_name_save = document.getElementById("item_name_save").value;
var item_color_save = document.getElementById("item_color_save").value;
var item_category_save = document.getElementById("item_category_save").value;
var item_size_save = document.getElementById("item_size_save").value;
chrome.storage.sync.set({'item_name_save' : item_name_save}, function() {
console.log('Value is set to ' + item_name_save);
});
chrome.storage.sync.set({'item_color_save' : item_color_save}, function() {
console.log('Value is set to ' + item_color_save);
});
chrome.storage.sync.set({'item_category_save' : item_category_save}, function() {
console.log('Value is set to ' + item_category_save);
});
chrome.storage.sync.set({'item_size_save' : item_size_save}, function() {
console.log('Value is set to ' + item_size_save);
});
const msg = { name: item_name_save,
color: item_color_save,
category: item_category_save,
size: item_size_save
};
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, msg, function() {
});
});
location.reload();
// window.close();
}
manifest.json
{
"manifest_version": 2,
"name": "Supreme bot",
"description": "A bot for Supreme",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html",
"default_title": "Supreme bot"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["bot-functionallity.js"]
}
],
"permissions": [
"activeTab",
"tabs",
"storage",
"tabs"
]
}
(Когда весь код находится в функции onMessage, работает, но не так, как предполагалось) Неверная функциональность
Я в основном хочу, чтобы content.js НЕ был полностью внутриФункция onMessage, потому что она не работает должным образом, и ей назначают значения в глобальной области видимости из функции onMessage.Я просто хочу, чтобы эта информация отправлялась 1 раз из popup.js в content.js.