У меня есть раскрывающееся меню, и его значение определяет поведение моего расширения chrome. Мне нужно использовать его значение в моем файле content. js, и, следовательно, мне нужно передать его значение из всплывающего окна. js в content. js. Об этом есть несколько подобных сообщений, но, похоже, ни один из них не решил мою проблему. Ниже мой код, а закомментированные части - это разные версии моих попыток. Пожалуйста, дайте мне знать, что я делаю не так или что мне нужно сделать по-другому.
всплывающее окно. html
<select id="language-dropdown" data-placeholder="Choose a Language...">
<option value="English">English</option>
<option value="French">French</option>
<option value="German">German</option>
<option value="Spanish">Spanish</option>
</select>
всплывающее окно. js
/*chrome.runtime.onMessage.addListener( function ( msg, sender, sendResponse ) {
if ( ( msg.from === 'content' ) && ( msg.action === 'getLanguage' ) ) {
var language = document.getElementById("language-dropdown").value;
//var language = $('#language-dropdown').find(":selected").text();
sendResponse({ language: language });
return true;
} else {
return false;
}
});*/
chrome.runtime.onMessage.addListener( function(request, sender, sendResponse) {
if ((request.from === 'content') && (request.action === 'getLanguage')) {
sendResponse({
language: document.getElementById("language-dropdown").value });
};
});
содержимое. js
var word_dict;
/*chrome.runtime.sendMessage({ from: 'content', activate: true });
setTimeout(function () {
chrome.tabs.sendMessage(tabs[0].id, { from: 'content', action: 'getLanguage' }, languageDict);
}, 100);*/
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
chrome.tabs.sendMessage(tabs[0].id, { from: 'content', action: 'getLanguage' }, languageDict);
});
function languageDict (language) {
var lang = language.language;
console.log('Language:' + language);
if (lang === "English") {
word_dict = window.english_word_dict;
} else if (lang === "German") {
word_dict = window.german_word_dict;
} else {
Error; //other languages must be filled in here once available
}
}
/*var ddm = document.getElementById("language-dropdown");
//var selectedLanguage = ddm.options[ddm.selectedIndex].value;
if (ddm.value === "English") {
word_dict = window.word_dict;
} else if (ddm.value === "German") {
word_dict = window.german_word_dict;
} else {
Error;
}*/