我想实现一个功能就是,页面如果不操作20分钟,自动跳转到一个地方。就像电脑的屏保一样。
 说明:不是在操作的时候跳转,可能需要个定时器,但是不知道怎么弄。
       web项目。

解决方案 »

  1.   

    js每次刷新的时候清零开始计时,到20分钟了自动跳转var sec=0;
    var min=0;
    var hou=0;
    flag=0;
    idt=window.setTimeout("ls();",1000);
    function ls()
    {
    sec++;
    if(sec==60){sec=0;min+=1;}
    if(min==60){min=0;hou+=1;}
    document.getElementById("lbltime").innerText=min+"分"+sec+"秒";
    idt=window.setTimeout("ls();",1000);
    if(min==20)
    {
        document.getElementById("btnsubmit").click();//或者跳转到你指定的页面
    }
      

  2.   

    如果他有操作定时器要重新开始,比如说你有ajax 请求。你就需要重新开始计时。但是你不能每个方法,没个页面都加吧,这样太麻烦了。
      

  3.   

    有一个办法。需要服务器上部署两个站点。A站点是你的网站,配置session失效时间20分钟。在session失效的时候,往数据库里面做一个记号。
    客户端javascript不断轮询B站点,B站点从数据库中读取这个记号,发现存在,报告客户端,客户端收到信息,就刷新。
      

  4.   

    弄出来了       public void httpApplication_PostMapRequestHandler(Object source, EventArgs e)
            {
                HttpApplication httpApplication = (HttpApplication)source;
                if (httpApplication.Context.Handler is Page)
                {
                    Page page = (Page)httpApplication.Context.Handler;                if (page.GetType().Name.ToLower() == "default_aspx" || page.GetType().Name.ToLower() == "duty_aspx"
                        || page.GetType().Name.ToLower() == "honor_aspx" || page.GetType().Name.ToLower() == "weather_aspx")
                    {
                        XElement root = XElement.Load(httpApplication.Context.Server.MapPath("config.xml"));
                        int timeout = Convert.ToInt32(root.Element("timeout").Value) * 60 * 1000;
                        page.ClientScript.RegisterStartupScript(page.GetType(), "Module", "window.setTimeout(\"TimeRedirt();\","
                            + timeout.ToString() + ");", true);
                    }
                }        }