如何在页面中循环?

时间:2008-09-17 15:00:31

标签: php html

这是我最近的任务挑战。我还没有想出最好的方法,也许别人有个主意。

使用PHP和/或HTML,创建一个以给定间隔循环浏览任意数量的其他页面的页面。

例如,我们将加载此页面,它将带我们谷歌20秒,然后到雅虎10秒,然后到堆栈溢出180秒等等。

12 个答案:

答案 0 :(得分:18)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Dashboard Example</title>
<style type="text/css">
body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; }
iframe { border: none; }
</style>
<script type="text/javascript">
var Dash = {
    nextIndex: 0,

    dashboards: [
        {url: "http://www.google.com", time: 5},
        {url: "http://www.yahoo.com", time: 10},
        {url: "http://www.stackoverflow.com", time: 15}
    ],

    display: function()
    {
        var dashboard = Dash.dashboards[Dash.nextIndex];
        frames["displayArea"].location.href = dashboard.url;
        Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length;
        setTimeout(Dash.display, dashboard.time * 1000);
    }
};

window.onload = Dash.display;
</script>
</head>
<body>
<iframe name="displayArea" width="100%" height="100%"></iframe>
</body>
</html>

答案 1 :(得分:1)

为内容使用单独的iframe,然后在一段时间内使用Javascript delay()并设置iframe的location属性。

答案 2 :(得分:1)

当您被带到另一个站点(例如Google)时,控制权将传递到该站点,因此为了让您的脚本继续运行,您需要在一个框架中加载新站点,并保留您的脚本(我“可以想象最容易使用Javascript实现”在另一个框架中(可能会非常小,所以你看不到它)。

答案 3 :(得分:1)

我设法创造了这个东西。它不漂亮,但确实有效。

<?php
# Path the config file, full or relative.
$configfile="config.conf"; 
$tempfile="tmp.html";
# Read the file into an array
$farray=file($configfile);  
# Count array elements
$count=count($farray);  
if(!isset($_GET['s'])){
    $s=0;
}else{  
    $s=$_GET['s'];
if($s==($count-1)){ # -1 because of the offset in starting our loop at 0 instead of 1
    $s=0;
}else{
    $s=$_GET['s']+1; # Increment the counter
}
}
# Get the line from the array
$entry=$farray[$s];
# Break the line on the comma into 2 entries
$arr=explode(",",$entry);       
# Now each line is in 2 pieces - URL and TimeDelay
$url=strtolower($arr[0]);
# Check our url to see if it has an HTTP prepended, if it doesn't, give it one.
$check=strstr($url,"http://"); 
if($check==FALSE){
    $url="http://".$url;
    }           
# Trim unwanted crap from the time
$time=rtrim($arr[1]);               
# Get a handle to the temp file
$tmphandle=fopen($tempfile,"w");
# What does our meta refresh look like?
$meta="<meta http-equiv=\"refresh\" content=\"".$time.";url=index.php?s=".$s."\">\n";
# The iframe to display
$content="<iframe src =\"".$url."\" height=\"100%\" width=\"100%\"></iframe>";
# roll up the meta and content to be written
$str=$meta.$content;
# Write it
fwrite($tmphandle,$str);
# Close the handle
fclose($tmphandle);
# Load the page
die(header("Location:tmp.html"));            
?>

配置文件看起来像(URL,停留在该页面上的时间): google.com,5 http://yahoo.com,10

答案 4 :(得分:0)

你可以很容易地用JavaScript做到这一点。了解部署环境将有所帮助。它是一个亭子还是什么?

对于JavaScript解决方案,请提供一个包含JavaScript的页面,该页面将弹出一个新的浏览器窗口。然后,控制器页面将使新浏览器窗口循环显示一系列页面。这是我能想到的最简单的方法。

编辑:同意Simon的评论。此解决方案最适用于自助服务终端或大型公共显示环境,在这种环境中,页面只是在没有任何用户交互的情况下显示。

答案 5 :(得分:0)

取决于您的确切要求。如果您允许使用JavaScript并允许框架,那么您可以在页面的框架集中粘贴一个隐藏框架,您可以在其中加载一些JavaScript。然后,此JavaScript将使用window.location对象和setTimeout函数控制主框架的内容。

缺点是用户的地址栏不会使用新URL更新。我不确定这会如何实现。如果您能澄清限制,我可以提供更多帮助。

编辑 - Shad的建议是可能的,但除非用户触发操作,浏览器可能会阻止弹出窗口。再次,您必须澄清是否允许弹出窗口。

答案 6 :(得分:0)

创建一个包含IFrame的包装器HTML页面,其大小为100% x 100%。然后添加一些javascript,在设置的时间间隔之间更改IFrame的src

答案 7 :(得分:0)

我认为它必须像gabbly.com一样工作,这会吸引其他网站,并在其上显示自己的内容。

一旦你阅读了其他网站并准备好显示它,你就无法“在PHP中”真正做到这一点;您必须发送HTML重定向元标记:

<meta HTTP-EQUIV="REFRESH" content="15; url=http://www.thepagecycler.com/nextpage.html">

或者您可以使用Javascript代替元标记。

答案 8 :(得分:0)

这在PHP脚本中是不可行的,除非你想编辑重定向.... PHP是一种后端技术;你需要在Javascript等中做到这一点。

据我所知,您要做的最好的事情是在Web服务器上创建一个文本文件,并根据该文本文件的超时时间加载不同的HTTP地址,然后将浏览器重定向到该站点在该文本文件中找到。

答案 9 :(得分:0)

跳出来的第一个解决方案是在框架集中执行此操作。隐藏其中一个框架,另一个框架显示相关页面。使用隐藏框架中的Javascript驱动页面过渡。

function RefreshFrame()
{
    parent.VisibleFrame.location.href = urlArray[i];
    i++;

    if(i < urlArray.length) SetTimeout("RefreshFrame()", 20000);
}

var i = 0;
var urlArray = ['http://google.com','http://yahoo.com', 'http://www.search.com'];
RefreshFrame();

在此示例中,Javascript将位于hiddend框架中,您可以将可见框命名为“VisibleFrame”。

免责声明:我刚刚在评论窗口中编写了此代码,但尚未对其进行测试

答案 10 :(得分:0)

请求背后的理论基本上是从“自助服务终端”PC循环浏览各种系统的网页仪表板的能力。我监督一个数据中心,我们有几个监控系统,可以让我查看仪表板的温度,系统运行时间等。 这个想法是加载一个页面,它将从仪表板循环到每个仪表板上,在我指定的时间内,在此板上1分钟,在下一个板上30秒,在下一个板上2分钟等等... Javascript is绝对允许(虽然我对它没什么经验)。我选择的媒介是PHP / HTML,我没有看到只用它们干净利落的方法..

答案 11 :(得分:-1)

有很多方法可以做到这一点,iv编写了几个脚本和工具,包括从JS到Ruby的所有内容

最后使用http://dashboardrotator.com要容易得多。它通过简单的GUI处理浏览器重启,内存分配和意外窗口关闭。