所以,这是一个非常简单的问题,但我对其他人对于处理这个问题的“最佳”实践的看法很感兴趣。该网站是建筑能源信息的表示交付;它主要是HTML5 / CSS3和带有一些重型图形的jQuery。它确实使用PHP通过API来利用建筑信息,但它不会驱动网站的任何其他属性。
所以,这个网站需要做最后一件事,在设定的间隔(通常是几分钟长)后,页面需要将用户重定向到流程中的下一页。浏览器也要定期刷新(重新启动循环动画)非常重要。
我当然认为非常简单:
<html>
<head>
<script type="text/javascript">
<!--
function delayer(){
window.location = "../javascriptredirect.php"
}
//-->
</script>
</head>
<body onLoad="setTimeout('delayer()', 300000)">
</body>
</html>
这样可行,但它并不“感觉”是最好的选择。提前感谢能够提出想法的任何人。
答案 0 :(得分:2)
您还可以使用不依赖JavaScript的元刷新标记。
<meta http-equiv="refresh" content="300000;url=http:/yourdomain.com/javascriptredirect.php" />
这样做的缺点是,如果您需要与此重定向进行交互或取消它,因为它不受JavaScript限制,您无法对其进行任何操作。
关于页面的其他部分还需要偶尔刷新以重新启动动画,我建议使用JavaScript在给定的时间后执行此操作而不是刷新页面。原因是如果刷新页面,重定向“计时器”会重新启动,这意味着如果刷新比重定向更快,则永远不会重定向。
答案 1 :(得分:1)
我认为你的方法效果最好。当您使用代码刷新页面时,您可以在网址和页面加载中添加查询字符串参数,如果您在那里检测到该参数,那么您知道它已经刷新了,然后您可以决定在几次页面刷新后重定向。
function delayer(){
var refresh_value = getQuerystring('r')
if(refresh_value == '')
window.location = "../samepage.php?r=1"
if(refresh_value == '1')
window.location = "../samepage.php?r=2"
if(refresh_value == '2')
window.location = "../javascriptredirect.php"
}
function getQuerystring(key, default_)
{
if (default_==null) default_="";
key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
var qs = regex.exec(window.location.href);
if(qs == null)
return default_;
else
return qs[1];
}
如果这是早期的开发,我建议加载其他页面的内容,滑出当前内容,然后在新内容中滑动。这样就可以打开大门轻松触发页面刷新的大门。当我将网站视为幻灯片时,我会想到jquery mobile。当您单击jqmobile中的链接时,它会将下一页的内容加载到当前DOM中,然后它会滑出旧内容并在新内容中滑动。加载新内容后,会在网址上附加一个哈希标记,因此,它有助于确定在同一页面上引用另一个内容块的方式(如使用<a href="#paragrapn2">Go to Paragraph 2</a>
时)。