• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Uhren synchron machen

Hamster_Max

New member
Hi!

Ich hab da mal ne Frage: Ich habe eine Website (max.six) und habe da fünf Uhren. Diese Weltzeituhr habe ich mit iframe zusammengebastelt. Ich habe hier diese JavaScript-Scripts (Berlin New York Los Angeles Sydney Bangkok [die Uhren sind nicht zu sehen weil sie weiß sind...]) und kann die nicht alle auf die Seite basteln. Ich hoffe man versteht mich irgendwie... Denn die iframes laden manchmal alle unterschiedlich schnell, weshalb die Uhren alle nicht synchron ticken. Hat jemand eine Idee wie das am besten Funktioniert?

Danke schonmal im Vorraus. :)

2015-10-10_14h20_46.jpg
 
Also im Grunde finde ich das gar nicht mal so schlimm. Es macht die ganze Sache sogar ein wenig interessanter, da es nicht so statisch wirkt.

Willst du aber, das alles komplett Synchron ist, wirst du nicht drumherum kommen ein einziges Javascript zu entwickeln, welches mit einer fixen Zeitangabe arbeitet und du die Zeitdifferenz mit einbindest, die dann angezeigt wird. Somit wäre eine JS-Funktion mit Übergabe an eine DIV-ID möglich.


Gruß,
Terra
 
Das muss nicht unbedingt alles in ein JS, da man ja prinzipiell eine synchrone Quelle hat: die Systemuhr. Man muss nur die Timeouts richtig "timen":
Code:
<!DOCTYPE html>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Fenstertitel</title>
<style type="text/css"></style>
</head>
<body>

<script type="text/javascript">
Number.prototype.twoDigits = function(){
	if (this < 10){
		return "0" + this.toString();
	}
	else {
		return this.toString();
	}
};
function createClock(){
	var clock = document.createElement("div");
	document.body.appendChild(clock);
	function tick(){
		var now = new Date();
		clock.innerHTML = now.getHours().twoDigits() + ":" + now.getMinutes().twoDigits() + ":" + now.getSeconds().twoDigits();
		window.setTimeout(tick, 1000 - now.getMilliseconds());
	}
	tick();
}
createClock();
window.setTimeout(createClock, 1234);
window.setTimeout(createClock, 2345);
window.setTimeout(createClock, 3456);
window.setTimeout(createClock, 4567);
window.setTimeout(createClock, 5678);
</script>
</body>
</html>
 
Müsste mal fragen ...

ist es überhaupt möglich, eine zu 100% Synchronisation hinzubekommen?
Ich sage mal, in Sekundenbereich wird es sicherlich nicht auffallen aber wenn man jetzt hundertstel oder sogar tausendstel bräuchte, wäre es doch schon deswegen nicht Möglich, da ja das Script selbst eine gewisse Zeit benötigt um die Befehle abzuarbeiten und auch darzustellen.

Keine Ahnung, wie weit die Verarbeitungszeit da eine Rolle spielt.

Gruß,
Terra
 
100%ig synchron bekommst du das natürlich nicht, da JS nur einen Thread hat und somit das alles schön nacheinander ablaufen muss. ABER du musst ja auch nur im Rahmen der Wiederholungsrate deines Bildschirmes synchron sein. Dann ist die Darstellung auch synchron.
 
ist es überhaupt möglich, eine zu 100% Synchronisation hinzubekommen?
ja, wenn du alles in einem code-block hast

Ich sage mal, in Sekundenbereich wird es sicherlich nicht auffallen aber wenn man jetzt hundertstel oder sogar tausendstel bräuchte, wäre es doch schon deswegen nicht Möglich, da ja das Script selbst eine gewisse Zeit benötigt um die Befehle abzuarbeiten und auch darzustellen.
solange js läuft wird nicht gerendert
also wenn du in deinem code-block einmal die zeit holst und n-uhren zeichnest/zeiten ausgibst, werden diese änderungen erst gerendert, wenn dein script durch ist. somit sind diese 100%tig synchron. es kann nur sein, dass zw. begin des js und dem zeitpunkt, an dem die uhren auf dem bildschirm gezeichnet werden schon wieder ein(e) (paar) ms vergangen ist. je nachdem wie lange dein script gelaufen ist.
 
Zurück
Oben