我知道应该有一个简单的方法来做到这一点,但我猜我的大脑今天不起作用。我需要在x秒内刷新页面。我可以使用以下内容在.NET中执行此操作:
Response.AddHeader("Refresh", "300");
这很好,除了我还需要显示下次刷新前的分钟数和秒数。
所以我在javascript中使用以下代码从客户端执行此操作:
<script type="text/javascript"">
//enter refresh time in "minutes:seconds" Minutes should range from 0 to inifinity. Seconds should range from 0 to 59
var limit="0:30"
if (document.images){
var parselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1
}
function beginrefresh(){
if (!document.images)
return
if (parselimit==1)
window.location.reload()
else{
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if (curmin!=0)
curtime=curmin+" minutes and "+cursec+" seconds left until page refresh!"
else
curtime=cursec+" seconds left until page refresh!"
window.status=curtime
setTimeout("beginrefresh()",1000)
}
}
window.onload=beginrefresh;
</script>
除了一件事之外,这是有效的 - 每次刷新页面时,浏览器(IE)都会给出关于重新下载内容的唠叨消息。这不行。这是一个用户将全天打开的页面,无需用户干预即可刷新。 我想我可以取消显示下次刷新时间的消息,只使用ASP.NET系列,但如果有人有更好的想法,我会非常感激。
答案 0 :(得分:4)
不要使用window.location.reload()
,而是尝试重定向到当前网址:
window.location = window.location;
这样,浏览器不会回复邮件,而是向服务器发出新请求。您需要在各种浏览器中测试它。我刚刚测试了FF 3&amp; IE8很快;两者都很好看。
答案 1 :(得分:0)
您可以编写一些JavaScript用于刷新目的以及用于刷新计时器的代码。要刷新页面,您必须写这个 -
window.location.href = window.location.href
这一行JS将刷新页面,而不是你正在谈论的NAG屏幕(唠叨屏幕实际上是浏览器询问的问题,关于你是否要将POST数据重新发布到服务器)。
答案 2 :(得分:0)
还有另一个选项来刷新整个页面,这只是使用AJAX功能刷新您实际更改的页面部分。