41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
const slider = document.getElementById("slider");
|
|
const val = document.getElementById("val");
|
|
|
|
slider.addEventListener("input", () => {
|
|
val.textContent = slider.value;
|
|
});
|
|
|
|
slider.addEventListener("change", async () => {
|
|
const volume = Number(slider.value);
|
|
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
|
|
if (!tab?.id) return;
|
|
|
|
// Ensure page_script.js is injected
|
|
await chrome.scripting.executeScript({
|
|
target: { tabId: tab.id },
|
|
files: ["page_script.js"],
|
|
});
|
|
|
|
// Send message to the injected page script
|
|
chrome.tabs.sendMessage(tab.id, { action: "setVolume", volume });
|
|
});
|
|
|
|
// Initialize with current volume
|
|
(async function init() {
|
|
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
|
|
if (!tab?.id) return;
|
|
|
|
await chrome.scripting.executeScript({
|
|
target: { tabId: tab.id },
|
|
files: ["page_script.js"],
|
|
});
|
|
|
|
chrome.tabs.sendMessage(tab.id, { action: "getVolume" }, (response) => {
|
|
if (chrome.runtime.lastError) return; // ignore if no response
|
|
if (response && typeof response.volume === "number") {
|
|
slider.value = response.volume;
|
|
val.textContent = response.volume;
|
|
}
|
|
});
|
|
})();
|