23. marts 2003 - 17:51Der er
7 kommentarer og 1 løsning
stopur på server side.
Jeg har brug for at lave et stopur på serveren - som kan startes, stoppes og nulstilles af klienten. Klienten skal også kunne hente tiden evt. ved onClick="".
Du kan ikke have et stopur kørende hele tiden, men det er heller ikke nødvendigt.
Klienten kigger jo kun på tiden en gang imellem, så du skal blot gemme informationer om hvornår det blev startet, og om det kører.
Du kan gemme tiden i en application-variabel (med risiko for at den nulstilles) eller i en database.
Global.asa: Sub Application_Onstart Application("TimerSeconds")=0 Application("TimerRunning")=false Application("TimerStartTime")=0 end Sub
I den fil hvor du skal bruge den (eller en include fil):
Sub StartASPTimer if Application("TimerRunning")=false then Application("TimerStartTime")=Now Application("TimerRunning")=true end if end Sub
Sub StopASPTimer If Application("TimerRunning")=true then Application("TimerSeconds")=cInt(Application("TimerSeconds"))+DateDiff("s",cDate(Application("TimerStartTime")),Now) Application("TimerRunning")=false End if End Sub
Function ShowASPTimer() if Application("TimerRunning")=true then TimerShowSeconds=cInt(Application("TimerSeconds"))+DateDiff("s",Application("TimerStartTime"),Now) else TimerShowSeconds=cInt(Application("TimerSeconds")) end if ShowASPTimer=TimerShowSeconds end Function
hvordan kalder du din startASPtimer() <A HREF=/"#/" OnClick=/"<%StartASPTimer()%>/">Start Timer</A> Kan ikke rigtigt få sat Application("TimerRunning") = true;
Det er længe siden jeg har brugt dem, men værsgod:
Global.asa (har jeg normalt i vbscript af hensyn til nogle udviklingsværktøj): <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Application_Onstart Application("TimerSeconds")=0 Application("TimerRunning")=-1 Application("TimerStartTime")=0 end Sub </SCRIPT>
asptimer.asp: <% function StartASPTimer() { if (Application("TimerRunning")==-1) { curDate=new Date() Application("TimerStartTime")=Math.round(curDate.valueOf()/1000); Application("TimerRunning")=1; } }
function StopASPTimer() { if (Application("TimerRunning")==1) { curDate=new Date(); Application("TimerSeconds")=Application("TimerSeconds")+(Math.round(curDate.valueOf()/1000)-Application("TimerStartTime")); Application("TimerRunning")=-1; } }
function ResetASPTimer() { curDate=new Date(); Application("TimerStartTime")=Math.round(curDate.valueOf()/1000); Application("TimerSeconds")=0; } function ShowASPTimer() { if (Application("TimerRunning")==1) { curDate=new Date(); TimerShowSeconds=Application("TimerSeconds")+(Math.round(curDate.valueOf()/1000)-Application("TimerStartTime")); } else { TimerShowSeconds=Application("TimerSeconds"); } return TimerShowSeconds; } function IsASPTimerRunning() { return (Application("TimerRunning")==1); } %>
testtimer.asp: <html><script language="javascript"> var TimerInit=false; var TimerDiv=false; var TimerIFrame=false;
function InitTimer() { if (document.getElementById) { TimerDiv=document.getElementById("divTimer"); TimerScript=document.getElementById("scrTimer"); TimerInit=true; } else { if (document.all) { TimerDiv=document.all("divTimer"); TimerScript=document.all("scrTimer"); TimerInit=true; } } } function StartTimer() { if (TimerInit) { TimerScript.src="starttimer.asp"; } return false; } function ResetTimer() { if (TimerInit) { TimerScript.src="resettimer.asp"; } return false; } function StopTimer() { if (TimerInit) { TimerScript.src="stoptimer.asp"; } return false; } function ShowTimer() { if (TimerInit) { TimerScript.src="showTimer.asp"; } } </script><script id="scrTimer" src="showtimer.asp"></script><body onload="InitTimer()"><div id="divTimer"></div> <a href="#Start" onclick="return StartTimer()">Start</a> <a href="#Start" onclick="return StopTimer()">Stop</a> <a href="#Start" onclick="return ResetTimer()">Nulstil</a> </body></html>
Man kunne godt kombinere start, stop, reset i en fil, og sende en parameter med til scriptet.
Den giver lidt med at cursoren blinker, da den jo er nødt til hele tiden at hente værdien fra serveren. Det kunne jo være en anden havde stoppet den. Man kunne eventuelt ændre setTimeout til kun at trigge hvert 10 sekund.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.