Я новичок в chrome расширениях и до сих пор неясен, как различные файлы взаимодействуют друг с другом. Мое расширение отображает файл html на экране новой вкладки. Цель состоит в том, чтобы мои настройки находились во всплывающем экране расширения chrome. У меня проблемы с отправкой команды из всплывающего окна в файл индекса. html для отображения изменений.
В этом примере я пытаюсь использовать светлый и темный режим, который меняется, когда тумблер изменено во всплывающем окне.
Смысл в том, чтобы тема данных была переключена со светлой на темную или наоборот, когда во всплывающем окне нажимается кнопка.
Любая помощь / объяснение то, что я делаю неправильно, было бы полезно. Спасибо.
index. html - релевантная часть по крайней мере
<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
<script src="../content.js"></script>
</head>
</html>
манифест. json
{
"manifest_version": 2,
"name": "Esports Dashboard",
"version": "1.0",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": ["content.js"]
}
],
"background": {
"scripts": ["background.js"]
},
"permissions": [
"tabs",
"storage"
],
"default_icon": "favicon48.jpg",
"icons": {
"16": "favicon16.jpg",
"48": "favicon48.jpg"
},
"browser_action": {
"default_icon": "favicon48.jpg",
"default_popup": "popUp.html",
"default_title": "Esports Dashboard"
},
"chrome_url_overrides": {
"newtab": "main/index.html"
}
}
всплывающее окно. html
<html>
<head>
<link rel="stylesheet" href="stylepopup.css">
<script src="content.js"></script>
</head>
<body>
<div class="popupTitle"></div>
<div class="popupContainer">
<h3 class="spoilerSetting">Spoiler Default</h3>
<form class="spoilerToggle">
<input type="checkbox" id="toggleSpoiler" class="checkboxSpoiler"></input>
<label for="toggleSpoiler" class="switchSpoiler"></label>
</form>
<h3 class="darkModeSetting">Dark Mode</h3>
<form class="darkModeToggle">
<input type="checkbox" id="toggleDarkMode" class="checkboxDarkMode"></input>
<label for="toggleDarkMode" class="switchDarkMode"></label>
</form>
</div>
</body>
</html>
содержание. js
document.addEventListener('DOMContentLoaded', function() {
var checkPageButton = document.getElementById('toggleDarkMode');
var checkboxDarkMode = document.querySelector('input[name=theme]');
checkboxDarkMode.addEventListener('change', function() {
if(this.checked){
document.documentElement.setAttribute('data-theme', 'dark')
}
else {
document.documentElement.setAttribute('data-theme', 'light')
}
})
})