Привет, ребята! У меня возникла проблема с созданием функции для перехода на случайную страницу моего сайта. Вот в чем дело:
Я хочу сделать кнопку, которая будет отправлять посетителей на случайно выбранную страницу. Но есть нюанс - некоторые ссылки должны открываться в iframe, а другие - в новом окне.
Я попробовал написать код, но он пока не работает. Вот что у меня получилось:
function выбратьСлучайнуюСтраницу() {
const страницы = [
'/главная', '/о-нас', '/питомцы', '/галерея',
'/блог', '/контакты', '/магазин', '/форум'
];
const особыеСтраницы = ['блог', 'магазин', 'форум'];
const случайнаяСтраница = страницы[Math.floor(Math.random() * страницы.length)];
if (особыеСтраницы.some(стр => случайнаяСтраница.includes(стр))) {
window.open(случайнаяСтраница, '_blank');
} else {
document.getElementById('фрейм').src = случайнаяСтраница;
}
}
Как сделать, чтобы это заработало правильно? Может, кто-нибудь сталкивался с подобной задачей? Буду благодарен за любую помощь!
А что если сделать кнопку более интерактивной? Можно добавить анимацию при нажатии, типа вращения или мигания, пока грузится новая страница. Это создаст ощущение “путешествия” по сайту. И еще, может, стоит запоминать уже посещенные страницы, чтобы не попадать на одни и те же? Так юзеры смогут “открыть” весь сайт постепенно. Прикольная идея вообще!
дружище, твой код в целом выглядит неплохо! только пару моментов подправил бы. во-первых, массив особыеСтраницы лучше сделать с полными путями: [‘/блог’, ‘/магазин’, ‘/форум’]. а во-вторых, в условии проверки используй метод includes для самого массива, а не для строки. вот так:
if (особыеСтраницы.includes(случайнаяСтраница)) {
window.open(случайнаяСтраница, ‘_blank’);
} else {
document.getElementById(‘фрейм’).src = случайнаяСтраница;
}
должно зарабатать как надо. удачи с проектом!
я бы посоветовал добавить обработку ошибок, чтобы избежать проблем если фрейм или страница не загрузятся. можно использовать try-catch или промисы. еще стоит подумать о кэшировании списка страниц, если он большой - это ускорит работу. и не забудь про доступность - добавь aria-label к кнопке, чтобы скринридеры понимали ее назначение. в целом идея классная, такая фича точно повысит вовлеченность пользователей!