101 lines
No EOL
2.4 KiB
HTML
101 lines
No EOL
2.4 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Botascopia</title>
|
||
|
||
<link rel="stylesheet" type="text/css" href="/assets/style.css">
|
||
<link rel="stylesheet" type="text/css" href="/assets/fonts/borna/stylesheet.css">
|
||
<link rel="stylesheet" type="text/css" href="/assets/fonts/nunita/stylesheet.css">
|
||
|
||
</head>
|
||
|
||
<body>
|
||
|
||
<include src="/components/site-header.html"></include>
|
||
|
||
<main>
|
||
|
||
|
||
<section class="page-header">
|
||
<div class="page-header__inner">
|
||
<h2 class="page-title">À propos du projet</h2>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="page-grid">
|
||
|
||
<nav class="page-nav">
|
||
<ul class="toc">
|
||
<li><a href="#demarche-botascopia">La démarche</a></li>
|
||
<li><a href="#equipe">L’équipe</a></li>
|
||
<li><a href="#soutien-financier">Soutien Financier</a></li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
|
||
<section class="page-content">
|
||
<!-- Contenu -->
|
||
|
||
</section>
|
||
|
||
</section>
|
||
|
||
|
||
|
||
|
||
|
||
</main>
|
||
|
||
|
||
|
||
<include src="/components/site-footer.html"></include>
|
||
|
||
|
||
|
||
<!-- SCRIPT À SUPPRIMER UNE FOIS LE SITE INTEGRÉ (include des composants)-->
|
||
<script>
|
||
async function processIncludes(maxDepth = 5) {
|
||
let depth = 0;
|
||
|
||
while (depth < maxDepth) {
|
||
const includes = document.querySelectorAll('include[src]');
|
||
if (includes.length === 0) break;
|
||
|
||
const promises = Array.from(includes).map(async el => {
|
||
const src = el.getAttribute('src');
|
||
|
||
try {
|
||
const response = await fetch(src, { cache: "no-store" });
|
||
if (!response.ok) throw new Error(response.status);
|
||
const html = await response.text();
|
||
el.outerHTML = html;
|
||
} catch (err) {
|
||
console.error("Erreur include:", src, err);
|
||
}
|
||
});
|
||
|
||
await Promise.all(promises);
|
||
|
||
// Petite pause pour éviter rafale ultra rapide
|
||
await new Promise(r => setTimeout(r, 50));
|
||
|
||
depth++;
|
||
}
|
||
|
||
if (depth === maxDepth) {
|
||
console.warn("Max include depth reached (possible boucle).");
|
||
}
|
||
}
|
||
|
||
document.addEventListener("DOMContentLoaded", () => {
|
||
processIncludes();
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
|
||
</html> |