Загружать случайную HTML-страницу при перезагрузке

У меня есть несколько разных html-страниц, и мне нужно, чтобы одна из них загружалась случайным образом при каждом обновлении страницы. Это то, что у меня есть до сих пор, единственная проблема в том, что я застреваю в бесконечном цикле обновления. Как я могу загрузить только одну страницу при обновлении?

  var sites = ['/one.html', '/two.html', '/three.html'];
  var randomUrl = sites[Math.floor(Math.random() * sites.length )];
  window.location.reload = randomUrl;

Заранее спасибо!

Возможно, у вас есть этот сценарий на всех трех страницах HTML?

Benni 03.01.2019 19:12

Я знаю ... что имеет смысл в том, почему он застрял в петле. Как он узнает о загрузке случайного файла при обновлении, если скрипт не загружен на каждом из них?

Traf 03.01.2019 19:22

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

Benni 03.01.2019 19:23

Я создаю своего рода StumbleUpon (но с локальными URL-адресами), поэтому я не обязательно ищу какую-либо пересылку, а не просто загружаю любую из html-страниц случайным образом каждый раз, когда пользователь обновляет страницу. Имеет ли это смысл?

Traf 03.01.2019 19:26

В этом есть смысл. Вы можете создать страницу index.html, загрузить в нее случайный файл с помощью AJAX и вставить его содержимое в DOM. Сейчас я напишу ответ, описав это более подробно.

Benni 03.01.2019 19:30

window.location.reload не идет по пути .....

epascarello 03.01.2019 19:30

Случайная логика должна обрабатываться на стороне сервера. Это означает, что всякий раз, когда запрашивается страница, сервер бросает кости и отправляет случайную страницу.

YetAnotherBot 03.01.2019 19:31

@epascarello Я не совсем понимаю, что это значит. У тебя есть решение?

Traf 03.01.2019 19:49

@AdityaGupta Есть простой способ сделать это с помощью JavaScript? В настоящее время у меня нет серверной части для этого.

Traf 03.01.2019 19:49

reload - это метод .... developer.mozilla.org/en-US/docs/Web/API/Location/reload Вы не используете его для перехода на новую страницу!

epascarello 03.01.2019 20:11

Невозможно узнать, была ли страница обновлена ​​или на которую был выполнен переход. Вы можете сохранить информацию о сеансе, чтобы увидеть, загружена ли страница, но это не обрабатывает случаи, когда у пользователя открыто более одного окна, и так далее.

epascarello 03.01.2019 20:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
11
688
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Простое исправление - передача параметра

window.location.reload = randomUrl + "?reload=0";

и проверьте параметр запроса reload = 0, прежде чем делать

window.location.reload = randomUrl;

Похоже, у меня это не работает. Не загружает другие HTML-страницы при перезагрузке. Я также несколько новичок в javascript, поэтому я буквально просто копирую и вставляю.

Traf 03.01.2019 19:39
Ответ принят как подходящий

Если вы просто пишете небольшую непроизводственную обучающую страницу (потому что, на мой взгляд, это не очень хорошая практика). Вы можете использовать Cookie / местное хранилище / хранение сессий.

if (sessionStorage.getItem('loaded')===null){
   sessionStorage.setItem('loaded', '1');
   **YOUR CODE** 
}
else{
   /* remove if you just loaded a random page so it will work after the next reload */
   sessionStorage.removeItem('loaded')
}

Я сделаю вам sessionStore, потому что он будет сброшен, если браузер будет закрыт, но на самом деле на данный момент это не имеет значения.

Это сработало для меня! Большое спасибо. Просто любопытно, почему это считается плохой практикой?

Traf 03.01.2019 21:12

Я не знаю ... это просто чувство. Может и нормально :)

Zero Soul Eater 03.01.2019 21:23

Вы получаете бесконечный цикл, потому что каждый раз, когда загружается новая страница, сценарий выполняется снова и снова, а также потому, что у вас есть один и тот же сценарий, загруженный в каждый из этих html. У вас может быть триггер события, чтобы он выполнялся только после того, как это произойдет, например, щелчок мышью (пример ниже) Если вы хотите, чтобы эта случайная страница открывалась только один раз, вы можете разместить скрипт только на главной странице.

document.onclick = reloadpage;

function reloadpage() {
    var sites = ['/one.html', '/two.html', '/three.html'];
    var randomUrl = sites[Math.floor(Math.random() * sites.length )];
    window.open(randomUrl, "_self");
}

Другие вопросы по теме