feat(router): use page <title> when injecting pages, fallback to generated title

This commit is contained in:
2026-05-28 21:12:45 +02:00
parent 59d18dfdb7
commit ca7cbf98ec
+7 -1
View File
@@ -168,6 +168,13 @@
const injected = parsed.querySelector("[data-page-content]") ?? parsed.body; const injected = parsed.querySelector("[data-page-content]") ?? parsed.body;
main.innerHTML = injected.innerHTML.trim(); main.innerHTML = injected.innerHTML.trim();
await injectPageScripts(parsed, response.url); await injectPageScripts(parsed, response.url);
// Update document title from the fetched page if present, otherwise use generated title
const pageTitleEl = parsed.querySelector("title");
if (pageTitleEl && pageTitleEl.textContent && pageTitleEl.textContent.trim()) {
document.title = pageTitleEl.textContent.trim();
} else {
document.title = routeToTitle(route);
}
} }
function render(route, { replaceHistory = false } = {}) { function render(route, { replaceHistory = false } = {}) {
@@ -177,7 +184,6 @@
.then(() => { .then(() => {
setActiveRoute(safeRoute); setActiveRoute(safeRoute);
setCanonicalUrl(safeRoute, replaceHistory); setCanonicalUrl(safeRoute, replaceHistory);
document.title = routeToTitle(safeRoute);
window.scrollTo({ top: 0, behavior: "smooth" }); window.scrollTo({ top: 0, behavior: "smooth" });
}) })
.catch((error) => { .catch((error) => {