Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

realtime klok (vbscript - ASP)

None
18 antwoorden
  • Ik zit met een probleemke. Het is de bedoeling dat op een asp-pagina de tijd van de webserver wordt getoond. Dit lukt, maar de tijd wordt weergegeven van het moment dat je de pagina bekijkt. Maar het is de bedoeling dat de klok door blijft lopen, zodat de actuele tijd van de server getoond wordt.

    Hoe los ik dit op?

    Alvast Bedankt
  • ASP pagina's worden als copie van de server gehaald. Het is dus een momentopname. De tijd op de klok die van de server afgehaald wordt is dus ook een momentopname.

    Wat jij moet doen is een clientside klokje op je pagina tonen.
  • Ik weet dat het zo gaat, maar het is juist de bedoeling dat de tijd van de server wordt getoond.
  • 't is allemaal ook zo moeilijk.

    [code:1:c1bb47fb3d]
    <% @Language="JScript" %>
    <html>
    <head>
    <title>Server time</title>

    <script language="JavaScript">

    var serverTime = <%= new Date().getTime() %>;

    function clock()
    { var now = new Date(serverTime += 1000);

    var hours = now.getHours();
    var minutes = now.getMinutes();
    var seconds = now.getSeconds();

    document.forms.clock.display.value = hours +
    ((minutes < 10) ? ":0" : ":";) + minutes +
    ((seconds < 10) ? ":0" : ":";) + seconds;

    setTimeout("clock()", 1000);
    }

    </script>
    </head>
    <body onLoad="clock();">
    <form name="clock"><input type="text" name="display"></form>
    </body>
    [/code:1:c1bb47fb3d]
  • Het idee is leuk, maar natuurlijk niet optimaal. Je zet de aanroep van de clock functie in een onload, dus bij een traag ladende pagina (of trage verbinding) krijg je al een groot verschil. Verder ga je ervan uit dat een setTimeout van 1000 msec ook precies 1000 msec is (en dat is dus niet altijd waar!!) aangezien je dit getal bij de tijd optelt.
    Nu zal dat waarschijnlijk niet echt schokkende verschillen veroorzaken, maar beter lijkt mij om tijdens het parsen van de pagina de offset van de client-tijd en de server-tijd te bepalen en vast te leggen in een var.
    Bij het updaten van de clock kan je dan gewoon de tijd van de client pakken en daar de offset bij optellen.
  • je hebt helemaal gelijk, ik had er niet eens bij stilgestaan. de bedoeling van m'n vorige post was echter het aantonen hoe (simpel) je met waarden die je op/van de server verkregen hebt verder kunt werken en niet het tot een optimale oplossing (= lap voorgebakken code) komen, dat is dennis z'n taak.
  • [quote:2220365106]
    [b:2220365106]Op 05-04-2002 1:48 schreef cim:[/b:2220365106]
    … en niet het tot een optimale oplossing (= lap voorgebakken code) komen, …
    [/quote:2220365106]Ik zie toch echt een lap voorgebakken code :razz:

    [no offence mode]
    Ik ken het kennisniveau van Dennis niet, maar ik denk dat een groot deel van de bezoekers van dit forum bovenstaande code niet helemaal op waarde kunnen inschatten. Dus dan had je beter een veel simpeler voorbeeld kunnen kiezen om de werking aan te tonen (of pseudo code), imho.
    [/no offence mode]

    Maar verder is de strekking van je verhaal duidelijk en ben ik het ook met je eens.
  • ok, lap optimaal, efficient, foutloos voorgebakken code :wink:

    en nu ik d'r over nadenk kom ik tot de conclusie dat een systeemklok ook niet met veel grotere regelmaat geupdate zal worden dan herhaaldelijke calls a.d.h.v timeout. De twee klokjes zullen hooguit wat "scheef" gaan lopen waarbij het script-klokje de, op dat ene moment verkregen, tijd misschien nog wel beter zal bijbenen (wishfull thinking).
  • Alvast bedankt voor de reacties. Ik wil niet ondankbaar klinken, maar ik heb eigenlijk een Vbscript nodig, en mijn kennis hiervan is nogal beperkt
  • [quote:07cd102056]
    Op 05-04-2002 9:40 schreef dennis_tielen:
    Alvast bedankt voor de reacties. Ik wil niet ondankbaar klinken, maar ik heb eigenlijk een Vbscript nodig, en mijn kennis hiervan is nogal beperkt
    [/quote:07cd102056]

    de mijne ook.

    maar vind je javascript voor clientside scripting niet een betere keuze? als je dan het script uit m'n eerdere post gebruikt + de door annie aangegeven verbeteringen doorvoert heb je waar je om vroeg.
  • [quote:0ac730e89e]
    Op 05-04-2002 9:40 schreef dennis_tielen:
    Alvast bedankt voor de reacties. Ik wil niet ondankbaar klinken, maar ik heb eigenlijk een Vbscript nodig, en mijn kennis hiervan is nogal beperkt
    [/quote:0ac730e89e]Ik wil niet al te flauw klinken, maar dan ga je toch zorgen dat je die kennis wel krijgt?

    Zo veel is er niet om uit te zoeken namelijk (zeker niet met de al aanwezige aanwijzigingen in deze post), imho.
  • Ha!!!
    Dat klokje van je komt recht uit een boek en als voorbeeld worden minuten en seconden onder de 10 als een 0 weergegeven.

    Dit is de oplossing:
    dit in head plaatsen
    <head>
    <script language=JavaScript>
    var Teller = null

    function toontijd()
    {
    var nu = new Date()
    var uren = nu.getHours()
    var minuten = nu.getMinutes()
    var seconden = nu.getSeconds()
    var tijdWaarde = "" + ((uren >24) ? uren -24 :uren)
    tijdWaarde += ((minuten < 10) ? ":0" + minuten : ":" + minuten)
    tijdWaarde += ((seconden < 10) ? ":0" + seconden : ":" + seconden)

    document.klok.klokbalk.value = tijdWaarde
    Teller = setTimeout("toontijd()",1000)
    }
    </script>

    </head>

    in body:
    <form name="klok"><input type=text name="klokbalk" size=10 value="">
    </form>

    [ Dit bericht is bewerkt door: sdk op 2002-04-05 20:04 ]
  • bedankt voor je bijdrage, maar dat was niet helemaal de vraag :razz:
  • [quote:b4ba59a604]
    Op 05-04-2002 20:02 schreef sdk:
    Ha!!!
    Dat klokje van je komt recht uit een boek en als voorbeeld worden minuten en seconden onder de 10 als een 0 weergegeven. etc..
    [/quote:b4ba59a604]

    ja, alléén bezit ik niet één boek over javascript :smile:

    het Date object uit javascript is een regelrechte kloon van een (standaard) klasse uit de taal java vandaar misschien dat mijn code gelijkenis vertoont met de jouwe… hoewel je in java echter een instantie van klasse DateFormat kunt gebruiken om een betekenisvolle representatie van een Date te verkrijgen.


    [ Dit bericht is bewerkt door: cim op 2002-04-05 21:13 ]
  • Allemaal erg leuk maar ik bedoel dat het script niet klopt.
    Las de tijd bijvoorbeeld 10:10:09 is dan zou er op jou klokje 10:00:00 staan en op mijn kloklje 10:10:10 snap je?
  • hoe kom je daar nu bij (????)
  • Omdat dit bij mij het geval was met dat script :smile:
  • dan heb jij een wel hééél speciale browser!

    heb je de code misschien gecopy-paste naar een bestand en deze via het fysieke pad aangeroepen?
    vervang dan het gedeelte <%= new Date().getTime() %> eens met new Date().getTime() dus weg met die "<%"-haakjes.

    want er zit voorzover ik het kan overzien geen logische fout in het desbetreffende gedeelte van de script. sterker nog jij gebruikt precies hetzelfde trucje om geformatteerde uitvoer te produceren.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.