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

#javascript #hyperlink #refresh

Вопрос:

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

 <head>
   <script type="text/javascript">
        // Create an array of the links to choose from:
        var links = new Array();
        links[0] = "page1.html";
        links[1] = "page2.html";
        //links[2] = "";
        //links[3] = "http://www.apple.com/";

        function openLink() {
          // Chooses a random link:
          var i = Math.floor(Math.random() * links.length);
          // Directs the browser to the chosen target:
          parent.location = links[i];
          return false;
        }
        </script>
</head>
<body onload="openLink();">
 

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

Ответ №1:

Он делает то, что ты ему велел. В конце концов вам придется добавить туда страницу, которая не ведет ни на какие другие страницы. В противном случае, где он вообще приземлится? Попробуйте это, что в конечном итоге приведет к http://www.randojs.com/

 <html>
    <head>
        <script type="text/javascript">
            // Create an array of the links to choose from:
            var links = ["page1.html", "page2.html", "http://www.randojs.com/"]; //RANDOJS.COM DOESN'T REDIRECT TO OTHER PAGES

            function openLink() {
              // Chooses a random link:
              var i = Math.floor(Math.random() * links.length);

              // Directs the browser to the chosen target:
              parent.location = links[i];

              return false;
            }
            </script>
    </head>
    <body onload="openLink();"></body>
</html>
 

ИЛИ, если вы прочтете randojs.com веб-сайт и решите, что вам проще использовать его, чем встроенную в javascript функцию Math.random (), вы можете использовать ее в своем проекте следующим образом:

 <html>
    <head>
        <script src="https://randojs.com/2.0.0.js"></script>
        <script type="text/javascript">
            // Create an array of the links to choose from:
            var links = ["page1.html", "page2.html", "http://www.randojs.com/"]; //RANDOJS.COM DOESN'T REDIRECT TO OTHER PAGES

            function openLink() {
              // Directs the browser to the chosen target:
              parent.location = rando(links).value;
            }
        </script>
    </head>
    <body onload="openLink();"></body>
</html>
 

Оба варианта будут работать. Rando.js это просто то, что мне нравится использовать. Это не является обязательным требованием.

Комментарии:

1. Кроме того, «родитель» обычно называется «окном». Поэтому вместо того, чтобы говорить parent.location, вы можете сказать window. местоположение, если вы так решите