Files
Bratonien-Adventskalender/adventskalender/2025/js/background.js

76 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ============================================================
// Adventskalender 2025 Hintergrund- & Favicon-Wechsel nach Tag
// ============================================================
(function () {
const pathYear = window.location.pathname.match(/(\d{4})/);
const YEAR = pathYear ? parseInt(pathYear[1], 10) : new Date().getFullYear();
const DEV_MODE = window.location.search.includes("dev");
const STORAGE_BASE = `bratonien_${YEAR}_lock`;
function getSimulatedDay() {
if (!DEV_MODE) return null;
const val = localStorage.getItem(`${STORAGE_BASE}_simday`);
return val ? parseInt(val, 10) : null;
}
const now = new Date();
let dayToShow = now.getMonth() === 11 ? now.getDate() : 0;
const sim = getSimulatedDay();
if (DEV_MODE && sim) dayToShow = sim;
let padded = "Basisbild";
if (dayToShow >= 1 && dayToShow <= 24) {
padded = String(dayToShow).padStart(2, "0");
}
// Basename ohne Extension
const filename = `${padded}`;
const basePath = "assets/images/";
// === Funktion zum Setzen des Favicons (.webp reicht völlig aus) ===
function setFavicon(path) {
let link = document.querySelector('link[rel="icon"]');
if (!link) {
link = document.createElement("link");
link.rel = "icon";
link.type = "image/png";
document.head.appendChild(link);
}
link.href = `${basePath}${filename}.webp`;
}
window.addEventListener("DOMContentLoaded", () => {
const picture = document.querySelector(".kalenderbild picture");
const img = picture?.querySelector("img");
const sources = picture?.querySelectorAll("source");
if (!picture || !img || !sources) return;
// Durch alle <source> durchgehen und neuen srcset setzen
sources.forEach(source => {
const type = source.getAttribute("type");
const format = type?.split("/")[1]; // "avif" oder "webp"
if (!format) return;
const newSrcset = [
`assets/images/420/${format}/${filename}.${format} 420w`,
`assets/images/768/${format}/${filename}.${format} 768w`,
`assets/images/1024/${format}/${filename}.${format} 1024w`,
`assets/images/1280/${format}/${filename}.${format} 1280w`,
`assets/images/1600/${format}/${filename}.${format} 1600w`,
`assets/images/1920/${format}/${filename}.${format} 1920w`,
`assets/images/2560/${format}/${filename}.${format} 2560w`,
`assets/images/3840/${format}/${filename}.${format} 3840w`,
].join(", ");
source.setAttribute("srcset", newSrcset);
});
// JPEG für <img>-Fallback
img.src = `assets/images/1920/jpeg/${filename}.jpg`;
console.log(`[Bratonien] Kalenderbild gesetzt für Tag ${filename}`);
setFavicon(`${basePath}${filename}.webp`);
console.log(`[Bratonien] Favicon gesetzt für Tag ${filename}`);
});
})();