fix: preload bg image before crossfade to eliminate black flash

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-04-28 09:39:50 +02:00
1 parent e0a518fa13
commit af0c2d6eb2
1 file changed
+15 -8
+15 -8
View File
@@ -62,14 +62,21 @@ let _npBgLastUrl = '';
function _crossfadeNpBg(cv) {
if ((cv || '') === _npBgLastUrl) return;
_npBgLastUrl = cv || '';
const currEl = document.getElementById(`np-bg-${_npBgCurr}`);
const nextId = _npBgCurr === 'a' ? 'b' : 'a';
const nextEl = document.getElementById(`np-bg-${nextId}`);
if (!currEl || !nextEl) return;
nextEl.style.backgroundImage = cv ? `url('${cv}')` : 'none';
nextEl.style.opacity = '1';
currEl.style.opacity = '0';
_npBgCurr = nextId;
const doFade = () => {
const currEl = document.getElementById(`np-bg-${_npBgCurr}`);
const nextId = _npBgCurr === 'a' ? 'b' : 'a';
const nextEl = document.getElementById(`np-bg-${nextId}`);
if (!currEl || !nextEl) return;
nextEl.style.backgroundImage = cv ? `url('${cv}')` : 'none';
nextEl.style.opacity = '1';
currEl.style.opacity = '0';
_npBgCurr = nextId;
};
if (!cv) { doFade(); return; }
const img = new Image();
img.onload = doFade;
img.onerror = doFade;
img.src = cv;
}
export function _syncNpDirect(s) {