Hur gör man om?
11 svar · 318 visningar · startad av Asa
Javaskript körs på besökarens dator och den har därför bara tillgång till besökarens klocka. Asp/php körs på servern och har därför bara tillgång till serverns klocka. Men resultatet från asp/php-sidan skickas inte till besökaren förrän skriptet har körts färdigt, så du kan inte få klockan att gå...
Aha, okej! Jobbigt .... :( Så detta kan då inte fixas.. trist.
Men du borde väl kunna skicka med serverns tid som en variabel till javascriptet som sedan visar tiden efter den variabeln?
Om du använder PHP kan du skriva:
<span id="klocka"></span>
<script language="JavaScript">
var serverTid = <?=time()?>000;
var elementId = "klocka";
function clock(){
if (document.layers || document.all || document.getElementById){
serverTid += 1000;
now = new Date(serverTid);
h = "0" + now.getHours();
h = h.substring(h.length-2, h.length);
min = "0" + now.getMinutes();
min = min.substring(min.length-2, min.length);
sec = "0" + now.getSeconds();
sec = sec.substring(sec.length-2, sec.length);
time = " " + h + ":" + min + ":" + sec;
if(document.layers){
with (document[elementId].document){
open();
write(time);
close();
}
} else if (document.all){
document.all[elementId].innerHTML = time;
} else if (document.getElementById){
jxdocrange = document.createRange();
jxdocrange.setStartBefore(document.getElementById(elementId));
while (document.getElementById(elementId).hasChildNodes()){
document.getElementById(elementId).removeChild(document.getElementById(elementId).lastChild);
}
document.getElementById(elementId).appendChild(jxdocrange.createContextualFragment(time));
}
setTimeout("clock()", 1000);
}
}
setTimeout("clock()", 1000);
</script>
Hur motsvarande kod ser ut i VBScript vet jag inte, men det jag antar att det finns någon funktion för att få ut UNIX timestamp.
Funkar ej! http://www.chippiland.com/pc.asp
Åhh, haha...
Hur gör man i asp då? Får ej till det...
Använder man VBScript får man ersätta
var serverTid = <?=time()?>000;
med
var serverTid = <%=FunktionSomSkriverUtUnixTimestamp()%>000;
Kolla efter i ASP-forumet om någon kan svara på vilken funktion (som skriver ut antalet sekunder sedan 1 januari 1970) det handlar om..
EDIT
Testa följande:
var serverTid = <%=DateDiff("s", "01/01/1970 00:00:00", Now())%>000;
Detta har jag frågat om tidigare (samma script):
http://www.webforum.nu/showthread.php?s=&forumid=24&threadid=41993
Tackar! :) Sökte kanske lite dåligt...