Update page title, URL and meta when navigating between lightbox slides

goToSlide() now calls history.replaceState + updates document.title,
description, og:title/description/url and canonical on each slide change.
replaceState is used so swipe/keyboard navigation doesn't pollute history.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 10:03:08 +02:00
parent 9900b193f6
commit ba9a9dc9c4
+14 -1
View File
@@ -297,9 +297,22 @@
if (lbIndex) { if (lbIndex) {
lbIndex.innerHTML = `<b>${String(lbIdx + 1).padStart(3,'0')}</b> / ${lbList.length}`; lbIndex.innerHTML = `<b>${String(lbIdx + 1).padStart(3,'0')}</b> / ${lbList.length}`;
} }
lbBuildMeta(lbList[lbIdx]); const p = lbList[lbIdx];
lbBuildMeta(p);
syncThumbs(); syncThumbs();
preloadNeighbors(lbIdx); preloadNeighbors(lbIdx);
if (p && smooth) {
const postTitle = p.title + ' — Roux';
const postUrl = new URL(p.url, location.origin).href;
document.title = postTitle;
history.replaceState({ slug: p.slug }, '', p.url);
setMeta('name', 'description', p.description || null);
setMeta('property', 'og:title', postTitle);
setMeta('property', 'og:description', p.description || null);
setMeta('property', 'og:url', postUrl);
const canon = document.querySelector('link[rel="canonical"]');
if (canon) canon.href = postUrl;
}
} }
function preloadNeighbors(idx) { function preloadNeighbors(idx) {