Avatar billede t_mons Nybegynder
23. marts 2003 - 17:51 Der 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="".

Jeg har kun brug for selve koden på serversiden..

Giver det mening ??
Avatar billede mortrr Praktikant
23. marts 2003 - 20:41 #1
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
Avatar billede t_mons Nybegynder
24. marts 2003 - 10:20 #2
Jeg kan sku ikke helt få det til at spille ??? :o(
Har lavet det om til java-script !!

jeg prøver lige lidt mere !
Avatar billede mortrr Praktikant
24. marts 2003 - 10:33 #3
Serverside?

Argh - jeg bruger selv normalt javascript serverside, så jeg brugte lidt tid på at "oversætte" den til vbscript.

Den virker nu fint her. Prøvede den lige igen.
Avatar billede t_mons Nybegynder
24. marts 2003 - 10:39 #4
hvordan kalder du din startASPtimer()
<A HREF=/"#/" OnClick=/"<%StartASPTimer()%>/">Start Timer</A>
Kan ikke rigtigt få sat Application("TimerRunning") = true;
Avatar billede t_mons Nybegynder
24. marts 2003 - 10:59 #5
Er det muligt at se dit eksempel i java-script :o)
Avatar billede mortrr Praktikant
24. marts 2003 - 12:17 #6
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);
}
%>


starttimer.asp:
<% @language=jscript%><!--#INCLUDE FILE="asptimer.asp"--><%
Response.Expires=-1;
Response.CacheControl="No-cache";
StartASPTimer();
Response.Redirect("ShowTimer.asp");
%>

stoptimer.asp:
<% @language=jscript%><!--#INCLUDE FILE="asptimer.asp"--><%
Response.Expires=-1;
Response.CacheControl="No-cache";
StopASPTimer();
Response.Redirect("ShowTimer.asp");
%>


resettimer.asp:
<% @language=jscript%><!--#INCLUDE FILE="asptimer.asp"--><%
Response.Expires=-1;
Response.CacheControl="No-cache";
ResetASPTimer();
Response.Redirect("ShowTimer.asp");
%>


showtimer.asp:
<% @language=jscript%><!--#INCLUDE FILE="asptimer.asp"--><%
Response.Expires=-1;
Response.CacheControl="No-cache";
%>
TimerDiv.innerText=<%=ShowASPTimer()%>;
window.setTimeout(ShowTimer,1000);


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.
Avatar billede mortrr Praktikant
24. marts 2003 - 12:22 #7
Prøvede den lige igen, og den har faktisk en mangel, så den blinker lidt mere end nødvendigt.

showtimer.asp:
<% @language=jscript%><!--#INCLUDE FILE="asptimer.asp"--><%
Response.Expires=-1;
Response.CacheControl="No-cache";
%>
TimerDiv.innerText=<%=ShowASPTimer()%>;
if (TimerTO) {
  window.clearTimeout(TimerTO);
}
TimerTO=window.setTimeout(ShowTimer,1000);

testtimer.asp:
<html><script language="javascript">
var TimerInit=false;
var TimerDiv=false;
var TimerIFrame=false;
var TimerTO=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>
Avatar billede t_mons Nybegynder
24. marts 2003 - 12:59 #8
Hold da ferie !!! - jeg er imponeret :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester