Как создать кнопку для перехода на случайную страницу сайта, учитывая особенности открытия некоторых ссылок?

Привет, ребята! У меня возникла проблема с созданием функции для перехода на случайную страницу моего сайта. Вот в чем дело:

Я хочу сделать кнопку, которая будет отправлять посетителей на случайно выбранную страницу. Но есть нюанс - некоторые ссылки должны открываться в 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 к кнопке, чтобы скринридеры понимали ее назначение. в целом идея классная, такая фича точно повысит вовлеченность пользователей!