73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
const pages = ['home','problem','why','features','how','roi','pricing','who','trust','roadmap','faq','signin','apply'];
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
// Set initial page based on URL hash or default to 'home'
|
|
const initialPage = window.location.hash.substring(1) || 'home';
|
|
openPage(initialPage, true);
|
|
|
|
// Handle back/forward navigation
|
|
window.addEventListener('popstate', (event) => {
|
|
const pageId = event.state ? event.state.page : 'home';
|
|
openPage(pageId, true);
|
|
});
|
|
|
|
// Check for query params like ?status=applied and switch to the right page
|
|
const urlParams = new URLSearchParams(window.location.search);
|
|
if (urlParams.has('status') || urlParams.has('error')) {
|
|
openPage('apply', true);
|
|
}
|
|
});
|
|
|
|
function openPage(pageId, isHistoryNavigation = false) {
|
|
if (!pages.includes(pageId)) {
|
|
pageId = 'home';
|
|
}
|
|
|
|
// Hide all pages
|
|
document.querySelectorAll('.page').forEach(page => {
|
|
page.classList.add('hidden');
|
|
});
|
|
|
|
// Show the target page
|
|
const targetPage = document.getElementById(`page-${pageId}`);
|
|
if (targetPage) {
|
|
targetPage.classList.remove('hidden');
|
|
} else {
|
|
// Fallback to home if page not found
|
|
document.getElementById('page-home').classList.remove('hidden');
|
|
pageId = 'home';
|
|
}
|
|
|
|
// Update nav links
|
|
document.querySelectorAll('.navlink').forEach(link => {
|
|
// Use endsWith to correctly match hrefs like '/#home' and '#home'
|
|
if (link.getAttribute('href').endsWith(`#${pageId}`)) {
|
|
link.classList.add('active');
|
|
} else {
|
|
link.classList.remove('active');
|
|
}
|
|
});
|
|
|
|
// Construct the new URL, preserving the base path
|
|
const newUrl = window.location.pathname + `#${pageId}`;
|
|
|
|
if (!isHistoryNavigation) {
|
|
// Create a new history state
|
|
history.pushState({ page: pageId }, null, newUrl);
|
|
} else {
|
|
// If it IS history navigation, we might need to clean up query params from the URL
|
|
if (window.location.search) {
|
|
history.replaceState({ page: pageId }, null, newUrl);
|
|
}
|
|
}
|
|
}
|
|
|
|
function toggleMenu(forceClose = false) {
|
|
const drawer = document.getElementById('drawer');
|
|
if (forceClose || !drawer.classList.contains('hidden')) {
|
|
drawer.classList.add('hidden');
|
|
} else {
|
|
drawer.classList.remove('hidden');
|
|
}
|
|
}
|