【问题标题】:Script to load random page on page load/refresh?在页面加载/刷新时加载随机页面的脚本?
【发布时间】:2014-07-22 07:53:44
【问题描述】:

我正在寻找可以让我在根目录中随机选择一个页面以在每次首次加载页面时加载并随后重新加载/刷新的东西。我有一个 index.html 和 index2.html例如在根目录中彼此略有不同。

我尝试了谷歌,但找不到任何东西/我尝试过的一切都不起作用。

我目前尝试使用的 javascript 是:

var howMany = 3;  // number of pages below, count them.

howMany = howMany-1
var page = new Array(howMany+1);

page[0]="index.html";
page[1]="index2.html";
page[2]="index.html";

function rndnumber(){
    var randscript = -1;
    while (randscript < 0 || randscript > howMany || isNaN(randscript)){
        randscript = parseInt(Math.random()*(howMany+1));
    }
    return randscript;
}
quo = rndnumber();
quox = page[quo];
location.href=(quox);

如果我在本地对其进行测试,它似乎可以工作,但由于某种原因,它会陷入无限的自动重新加载/刷新循环。当我将它上传到服务器时,没有重新加载循环,但随机化不起作用,它只是加载 index.html

我在这里设置了一个测试页面:http://www.samnorris.co.nz/test2/,根目录下有 index.html 和 index2.html

谁能提供任何线索为什么这可能无法正常工作和/或更好的解决方案?

谢谢!

【问题讨论】:

  • (另外,我意识到数组应该只指定 2 页而不是 3 页,但它似乎并没有什么不同......)
  • 如果您在用户每次加载/刷新页面时都继续重定向,他们会陷入重定向循环!

标签: javascript jquery html cycle


【解决方案1】:

javascript 在页面加载时在客户端上执行。因此,每次加载页面时,它都会随机选择一个页面并重定向到该页面。然后该页面嵌入了一些 JavaScript,在执行时会选择一个随机页面并加载它,...

更好的解决方案是使用服务器端语言处理服务器上的页面服务。以 PHP 为例。代码是这样的:

index.php

<?php
$randNumber = mt_rand(1,3);
if ( $randNumber == 1 )
{
    include 'index_1.html';
}
else
{
    include 'index_2.html';
}

【讨论】:

  • 你能给我多一点关于如何设置的想法吗? (抱歉,对 PHP 不太熟悉)...如果我将 index.php 上传到根路径,它似乎不想加载? (访问被禁止?我的 htaccess 文件中是否有/没有设置的东西导致这种情况?)直接导航到 index.php 它似乎卡在加载(samnorris.co.nz/test2/index.php)或给出错误
  • 它给了你错误,因为你试图包含的 index.html 不存在。在这种情况下,URL 也保持不变。服务器脚本只是向用户发送另一个(随机)内容。
  • 是的,抱歉,我刚刚解决了这个问题....现在它似乎将整个第二页嵌入到第一页中,虽然 o_O
  • 好的,修复了我的 htaccess 文件以将 index.php 作为根索引加载 - 但仍然有两个问题,它似乎与我的预加载器脚本冲突,导致它在加载时卡住.....上面提到它将整个页面都嵌入到一个页面中
  • 也许向我们展示您的整个代码? index.php 应该只包含我编写的代码。没有其他的。你的“预加载脚本”是什么?
【解决方案2】:

您必须以某种方式告诉脚本它已经被重定向。这可能可以使用位置的哈希来实现:

if (location.hash === "#redirected") {
  location.hash = "";
}
else {
  quo = rndnumber();
  quox = page[quo];
  location.href=(quox) + "#redirected";
}

【讨论】:

  • 我可以把它放在其他代码下面吗?啊...看看它现在在做什么,哈哈:samnorris.co.nz/test2 这次在服务器上获得了无限的重新加载/重定向循环...
  • 不只是下面。用它代替最后 3 行。
  • 好吧,很酷,这行得通,但现在我的 URL 中有一个有点难看的#redirected 标记.....不要以为有任何方法可以隐藏它,所以 URL 不会显示(或加载了哪个页面?)
  • 对不起,我忘了location.hash 也包含# 符号。在我的答案中查看编辑后的代码。 ;-)
  • 仍然显示 # 符号和加载页面的名称 - 到目前为止,这是一个可行的解决方案,但不是绝对理想的,除非我能找到一种方法来屏蔽 URL 或其他东西......跨度>
【解决方案3】:

在与 "index*.html" 文件相同的目录中创建具有以下内容的单独 html 文件:

<script type="text/javascript">
    var pages = [
        "index.html",
        "index2.html",
        "index3.html"
    ];

    function randomPage() {
        return pages[Math.round(Math.random() * (pages.length - 1))];
    }

    location.href= randomPage();
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多