自动刷新ASP.NET中的网页并捕获下次刷新之前的时间

时间:2009-04-08 14:53:36

标签: c# .net asp.net javascript

我知道应该有一个简单的方法来做到这一点,但我猜我的大脑今天不起作用。我需要在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系列,但如果有人有更好的想法,我会非常感激。

3 个答案:

答案 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)

“nag”来自浏览器刷新内容,该内容已经发布到服务器一次,并且是因为您的“重新加载”行。

还有另一个选项来刷新整个页面,这只是使用AJAX功能刷新您实际更改的页面部分。