This commit is contained in:
parent
16d9851535
commit
53b6355baf
21 changed files with 385 additions and 132 deletions
|
|
@ -1,20 +1,51 @@
|
|||
window.onload = function () {
|
||||
includeHTML();
|
||||
headerToggle();
|
||||
// TEMP, with includeHTML() --------------------------------------
|
||||
|
||||
window.onload = async function () {
|
||||
await runIncludeHTML();
|
||||
initAfterLoad();
|
||||
};
|
||||
|
||||
window.onscroll = function () {
|
||||
headerShrink();
|
||||
};
|
||||
function runIncludeHTML() {
|
||||
if (typeof includeHTML === "function") {
|
||||
const result = includeHTML();
|
||||
|
||||
if (result instanceof Promise) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function headerToggle() {
|
||||
const header = document.getElementById('site-header');
|
||||
const buttonToggle = document.querySelector('menu-toggle');
|
||||
|
||||
console.log(buttonToggle);
|
||||
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
|
||||
/// INIT --------------------------------------------------------
|
||||
|
||||
// Note: une fois que IncludeHTML() est supprimé, on peut supprimer tout le temp au dessus
|
||||
// remplacer `function initAfterLoad()` par ↓
|
||||
// window.onload = async function () {
|
||||
|
||||
function initAfterLoad() {
|
||||
headerToggle();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ===============================
|
||||
// HEADER
|
||||
// ===============================
|
||||
function headerToggle() {
|
||||
const header = document.getElementById("site-header");
|
||||
const buttonToggle = document.querySelector("#menu-toggle");
|
||||
console.log(header);
|
||||
console.log(buttonToggle);
|
||||
|
||||
if (!header || !buttonToggle) return;
|
||||
buttonToggle.addEventListener("click", () => {
|
||||
document.body.classList.toggle("menu-open");
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,32 +2,34 @@
|
|||
// <header id="header" w3-include-html="components/header.html"></header>
|
||||
|
||||
|
||||
function includeHTML() {
|
||||
async function includeHTML() {
|
||||
const elements = document.querySelectorAll("[w3-include-html]");
|
||||
|
||||
var z, i, elmnt, file, xhttp;
|
||||
/* Loop through a collection of all HTML elements: */
|
||||
z = document.getElementsByTagName("*");
|
||||
for (i = 0; i < z.length; i++) {
|
||||
elmnt = z[i];
|
||||
/*search for elements with a certain atrribute:*/
|
||||
file = elmnt.getAttribute("w3-include-html");
|
||||
if (file) {
|
||||
/* Make an HTTP request using the attribute value as the file name: */
|
||||
xhttp = new XMLHttpRequest();
|
||||
xhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4) {
|
||||
if (this.status == 200) {elmnt.innerHTML = this.responseText;}
|
||||
if (this.status == 404) {elmnt.innerHTML = "Page not found.";}
|
||||
/* Remove the attribute, and call this function once more: */
|
||||
elmnt.removeAttribute("w3-include-html");
|
||||
includeHTML();
|
||||
}
|
||||
}
|
||||
xhttp.open("GET", file, true);
|
||||
xhttp.send();
|
||||
/* Exit the function: */
|
||||
return;
|
||||
}
|
||||
if (elements.length === 0) {
|
||||
return; // Plus rien à charger
|
||||
}
|
||||
|
||||
const promises = Array.from(elements).map(async (elmnt) => {
|
||||
const file = elmnt.getAttribute("w3-include-html");
|
||||
if (!file) return;
|
||||
|
||||
try {
|
||||
const response = await fetch(file);
|
||||
if (response.ok) {
|
||||
const html = await response.text();
|
||||
elmnt.innerHTML = html;
|
||||
} else {
|
||||
elmnt.innerHTML = "Page not found.";
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error loading ${file}:`, error);
|
||||
elmnt.innerHTML = "Error loading content.";
|
||||
}
|
||||
|
||||
elmnt.removeAttribute("w3-include-html");
|
||||
});
|
||||
|
||||
// Attendre que tous les fichiers soient chargés
|
||||
await Promise.all(promises);
|
||||
await includeHTML();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue