/** * Fetch status content and insert main content into provided container * @param {Element} containerEl Container to insert status into */ async function insertStatus(containerEl){ const baseUrl = containerEl.href; const res = await fetch(baseUrl, {cache:"no-cache"}); if(!res.ok){ console.info(`Network error requesting status : ${res.status} ${res.statusText}`); return; } const dom = new DOMParser().parseFromString(await res.text(), "text/html"); let base = dom.createElement("base"); base.href = containerEl.href; dom.head.append(base); const main = dom.querySelector("main"); if(!main) throw new Error("Status page does not contain a
element"); for(let it of main.querySelectorAll("[href],[src]")){ if(it.hasAttribute("href")){ it.href = it.href } else { it.src = it.src } } containerEl.innerHTML = ""; for(let node of main.childNodes){ containerEl.append(document.importNode(node, true)); } containerEl.className = main.className; } insertStatus(document.getElementById("status"))