2009-04-08 14 views
1

Ich weiß, es sollte eine einfache Möglichkeit, dies zu tun, aber ich denke, mein Gehirn funktioniert heute nicht. Ich muss eine Seite in x Sekunden aktualisieren.Aktualisieren Sie eine Webseite in ASP.NET automatisch und erfassen Sie die Zeit bis zur nächsten Aktualisierung

Response.AddHeader("Refresh", "300"); 

Das ist in Ordnung, außer ich muß auch bis zur nächsten Aktualisierung der Anzahl der Minuten und Sekunden angezeigt: Ich kann die folgend in .NET tun.

Ich verwende den folgenden Code in Javascript Also das von dem Client zu tun:

<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> 

Dies funktioniert mit einer Ausnahme - jedes Mal, wenn die Seite aktualisiert wird, gibt der Browser (IE) die nag Nachricht über das erneute Herunterladen von Inhalten oder etwas. Das wird nicht funktionieren. Dies ist eine Seite, die Benutzer den ganzen Tag geöffnet haben und die ohne Benutzereingriff aktualisiert werden muss. Ich nehme an, ich könnte die Nachricht entfernen, die die Zeit bis zur nächsten Aktualisierung anzeigt und nur die ASP.NET-Zeile verwenden, aber wenn jemand eine bessere Idee hat, würde ich es wirklich zu schätzen wissen.

Antwort

4

Statt window.location.reload() zu verwenden, versuchen, eine Umleitung auf die aktuelle URL zu tun:

window.location = window.location; 

Auf diese Weise wird der Browser nicht einen Beitrag zurück, sondern eine neue Anfrage an den Server tun. Sie sollten dies in verschiedenen Browsern testen. Ich habe gerade FF 3 & IE8 schnell getestet; beide sehen gut aus.

+0

Dies hat den Trick gemacht. Sollte das Nachladen Ding bemerkt haben. Macht vollkommen Sinn, dass dies den IE Nag verursachen würde. Gehirn funktioniert heute nicht - kann nicht berechnet werden. Gefahr wird Robinson, Gefahr! Vielen Dank! – user69889

0

Sie können ein wenig JavaScript für den Auffrischungszweck zusammen mit dem Code zum Aktualisieren des Timers schreiben. Um eine Seite zu aktualisieren, erhalten Sie diese schreiben -

window.location.href = window.location.href

Diese Linie von JS wird die Seite ohne die NAG Bildschirm auffrischen Sie sprechen darüber (Der Nag-Bildschirm ist eigentlich eine Frage, die vom Browser gestellt wird, ob Sie die POST-Daten erneut auf den Server übertragen möchten).

0

die "nag" ist aus dem Browser erfrischenden Inhalt, der einmal auf den Server gebucht wurde, und ist wegen Ihrer "Neuladen" -Zeile.

Es gibt eine weitere Option zum Aktualisieren der gesamten Seite, die nur die Teile der Seite aktualisiert, die Sie tatsächlich mit AJAX-Funktionalität ändern.

Verwandte Themen