最近我承担了一项挑战。我还没有想出实现这一目标的最佳方法,也许有人有一个想法。如何循环浏览页面?
使用PHP和/或HTML,创建一个页面,该页面以给定的时间间隔在任意数量的其他页面中循环。
例如,我们会加载这个页面,它会带我们到谷歌20秒,然后雅虎10秒,然后在180秒等堆栈溢出等等。
最近我承担了一项挑战。我还没有想出实现这一目标的最佳方法,也许有人有一个想法。如何循环浏览页面?
使用PHP和/或HTML,创建一个页面,该页面以给定的时间间隔在任意数量的其他页面中循环。
例如,我们会加载这个页面,它会带我们到谷歌20秒,然后雅虎10秒,然后在180秒等堆栈溢出等等。
使用单独的iframe作为内容,然后使用Javascript到delay()
一段时间并设置iframe的location
属性。
当你被带到另一个站点(例如Google)时,控制权传递到该站点,所以为了让你的脚本继续运行,你需要在一个框架中加载新的站点,并保留你的脚本我想可能最容易实现使用Javascript)在另一个框架(这可能是非常小,所以你不能看到它)。
你可以很容易地用JavaScript来做到这一点。这将有助于了解部署环境。这是一个亭子什么的?
对于JavaScript解决方案,提供一个包含JavaScript的页面,该页面将弹出一个新的浏览器窗口。控制器页面然后将导致新的浏览器窗口在一系列页面中循环。这是我能想到的最简单的方法。
编辑:同意Simon的评论。这种解决方案最适合于在没有任何用户交互的情况下显示页面的信息亭或大型公共显示环境。
取决于您的具体要求。如果您允许JavaScript并允许框架,那么您可以在您的页面上的框架集中粘贴隐藏框架,将其加载到一些JavaScript中。然后这个JavaScript将使用window.location对象和setTimeout函数来控制主框架的内容。
缺点是用户的地址栏不会使用新的URL进行更新。我不确定这将如何实现。如果你能澄清这些限制,我可以提供更多的帮助。
编辑 - 沙德的建议是一种可能性,但除非用户触发该操作,否则浏览器可能会阻止弹出窗口。再次,你必须澄清一个弹出是否允许。
创建一个包含IFrame的包装HTML页面,大小为100% x 100%
。然后添加一些javascript,在设置的时间间隔内更改IFrame的src
。
我认为它必须像gabbly.com一样工作,这会吸引其他网站,并在其上显示自己的内容。一旦你阅读了其他网站并准备好展示它,你就无法真正做到“在PHP中”。您将不得不发送HTML重定向元标记:
<meta HTTP-EQUIV="REFRESH" content="15; url=http://www.thepagecycler.com/nextpage.html">
或者您可以使用Javascript而不是元标记。
这是不可行的在一个PHP脚本,除非你想编辑重定向....PHP是一种后端技术;你需要用Javascript或类似的方法做到这一点。
据我所知,您所要做的最好的事情是在您的Web服务器上创建一个文本文件,并根据超出该文本文件的时间加载不同的HTTP地址,然后将浏览器重定向到在该文本文件中找到的网站。
跳转到第一个解决方案是在框架集中执行此操作。隐藏其中一个框架,另一个显示有问题的页面。使用隐藏框架中的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”。
免责声明:我只是在注释窗口写了这个代码,并没有测试它
请求背后的理论基本上是通过网页仪表盘的各种系统从“信息亭” PC的循环能力。我监督一个数据中心,我们有几个监视系统,允许我查看仪表盘的临时数据,系统运行时间等。 这个想法是加载一个页面,该页面可以从仪表板循环到仪表板,每个仪表板剩余一段时间我在这个板子上1分钟,在下一个板子上30秒,在下一个2分钟等等。Javascript是绝对允许的(尽管我没有什么经验)。我选择的媒体是PHP/HTML,我没有看到一种方法来使这种事情发生干净的只是他们..
<!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>
我设法创造这个东西。它不漂亮,但它确实有效。
<?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
有一大堆的方法可以做到这一点,IV写了一些脚本和工具从JS到红宝石的所有内容
最后使用http://dashboardrotator.com要容易得多。它用一个漂亮的简单GUI来处理浏览器重新启动,内存分配和意外的窗口关闭。
有一个小错误 - frames [“displayArea”]。location.href = dashboard.url; 应为 frames [“displayArea”]。location.href = dashboards.url; – 2008-09-17 17:41:13