<header>
<h2 class="title">PopState Events</h2>
<p class="description">Демонструє навігацію між розділами без перезавантаження сторінки</p>
</header>
<main>
<div class="result">
<button onclick="navigateTo('home')">Головна</button>
<button onclick="navigateTo('about')">Про нас</button>
<button onclick="navigateTo('contact')">Контакти</button>
<div id="content">
<!-- Тут з'являється відповідний розділ -->
<p>Виберіть розділ, щоб переглянути його вміст.</p>
</div>
</div>
</main>
body {
font-size: 16px;
line-height: 1.5;
font-family: monospace;
}
header {
background-color: #f1f1f1;
margin-bottom: 25px;
padding: 15px;
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
header h2.title {
padding-bottom: 15px;
border-bottom: 1px solid #999;
}
header p.description {
font-style: italic;
color: #222;
}
.result {
background-color: #f8f8f8;
padding: 15px;
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
button {
margin-right: 5px;
padding: 8px 12px;
cursor: pointer;
}
function navigateTo(section) {
const sectionsContent = {
home: "<h3>Головна</h3><p>Ласкаво просимо на головну сторінку!</p>",
about: "<h3>Про нас</h3><p>Тут ви знайдете інформацію про нас.</p>",
contact: "<h3>Контакти</h3><p>Зв'яжіться з нами за вказаними контактами.</p>",
};
// Оновлюємо вміст розділу
document.getElementById("content").innerHTML = sectionsContent[section];
// Додаємо новий стан до історії
history.pushState({ section }, "", `#${section}`);
}
// Обробник для події popstate
window.addEventListener("popstate", function(event) {
const section = event.state ? event.state.section : "home";
const sectionsContent = {
home: "<h3>Головна</h3><p>Ласкаво просимо на головну сторінку!</p>",
about: "<h3>Про нас</h3><p>Тут ви знайдете інформацію про нас.</p>",
contact: "<h3>Контакти</h3><p>Зв'яжіться з нами за вказаними контактами.</p>",
};
document.getElementById("content").innerHTML = sectionsContent[section];
});
// Завантажуємо початковий розділ відповідно до URL
document.addEventListener("DOMContentLoaded", () => {
const initialSection = location.hash.replace("#", "") || "home";
navigateTo(initialSection);
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.