Seite 1 von 1

Java Script Auslagerung

Verfasst: 29.05.2006, 20:20
von Indigo
Ich habe folgendes Script, das die Serverzeit anzeigt.

Das Java Script würde ich gerne auslagern, doch klappt das so nicht, da in der ersten Java Script Zeile auch PHP-Code ausgeführt wird.

Hat jemand ne Idee, oder sogar ein besseres Script ?

Code: Alles auswählen

<?php $Javascriptzeit=date&#40;"Y M d H&#58;i&#58;s"&#41;; ?>

<html>
<head>
<script language="JavaScript">
<!--
var Serverzeit = new Date&#40;"<?php echo$Javascriptzeit; ?>"&#41;;
function UhrzeitAnzeigen&#40;&#41;
&#123;
	if&#40;!document.all && !document.getElementById&#41;
	&#123;
		return;
	&#125;
	var Stunden = Serverzeit.getHours&#40;&#41;;
	var Minuten = Serverzeit.getMinutes&#40;&#41;;
	var Sekunden = Serverzeit.getSeconds&#40;&#41;;
	Serverzeit.setSeconds&#40;Sekunden+1&#41;;
	if&#40;Stunden<=9&#41;
	&#123;
		Stunden = "0" + Stunden;
	&#125;
	if&#40;Minuten<=9&#41;
	&#123;
		Minuten = "0" + Minuten;
	&#125;
	if&#40;Sekunden<=9&#41;
	&#123;
		Sekunden = "0" + Sekunden;
	&#125;
	Uhrzeitanzeige = Stunden + "&#58;" + Minuten + "&#58;" + Sekunden;
	if&#40;document.getElementById&#41;
	&#123;
		document.getElementById&#40;"Uhrzeit"&#41;.innerHTML = Uhrzeitanzeige
	&#125;
	else if&#40;document.all&#41;
	&#123;
		Uhrzeit.innerHTML = Uhrzeitanzeige;
	&#125;
	setTimeout&#40;"UhrzeitAnzeigen&#40;&#41;", 1000&#41;;
&#125;
//-->
</script>
<title>Uhrzeit des Webservers mit Javascript und PHP dynamisch anzeigen</title>
</head>
<body onLoad="UhrzeitAnzeigen&#40;&#41;;">
Uhrzeit&#58; <span id="Uhrzeit"></span>
</body>
</html>

Verfasst:
von

Verfasst: 29.05.2006, 21:00
von net(t)worker
leg es als .php datei ab.... wie der name einer datei ist, ist egal... hauptsache der browser bekommt js, wenn er js haben möchte...

Verfasst: 29.05.2006, 21:43
von Indigo
Hab ich gemacht.

timer.js heisst jetzt timer.php.

Er zeigt mir aber die Zeit nicht an.

Ich denke mal mit der Dateiänderung ist es nicht getan. Für den Browser ist es zwar Javascript, wir aber nicht durch PHP geparst.

Sonst noch jemand ne Idee ?

Vielleicht nochmal ne erklärung:

Folgender Code steht jetzt in der timer.js bzw. auch testweise in ner timer.php

Code: Alles auswählen

var Serverzeit = new Date&#40;"<?php echo$Javascriptzeit; ?>"&#41;;
function UhrzeitAnzeigen&#40;&#41;
&#123;
	if&#40;!document.all && !document.getElementById&#41;
	&#123;
		return;
	&#125;
	var Stunden = Serverzeit.getHours&#40;&#41;;
	var Minuten = Serverzeit.getMinutes&#40;&#41;;
	var Sekunden = Serverzeit.getSeconds&#40;&#41;;
	Serverzeit.setSeconds&#40;Sekunden+1&#41;;
	if&#40;Stunden<=9&#41;
	&#123;
		Stunden = "0" + Stunden;
	&#125;
	if&#40;Minuten<=9&#41;
	&#123;
		Minuten = "0" + Minuten;
	&#125;
	if&#40;Sekunden<=9&#41;
	&#123;
		Sekunden = "0" + Sekunden;
	&#125;
	Uhrzeitanzeige = Stunden + "&#58;" + Minuten + "&#58;" + Sekunden;
	if&#40;document.getElementById&#41;
	&#123;
		document.getElementById&#40;"Uhrzeit"&#41;.innerHTML = Uhrzeitanzeige
	&#125;
	else if&#40;document.all&#41;
	&#123;
		Uhrzeit.innerHTML = Uhrzeitanzeige;
	&#125;
	setTimeout&#40;"UhrzeitAnzeigen&#40;&#41;", 1000&#41;;
&#125;

Verfasst: 29.05.2006, 21:47
von net(t)worker

Code: Alles auswählen

<?php $Javascriptzeit=date&#40;"Y M d H&#58;i&#58;s"&#41;; ?>
wo haste das denn jetzt gelassen?

Verfasst: 30.05.2006, 06:49
von Indigo
Das steht weiterhin in der PHP-Datei, die das ausgelagerte Script dann aufruft.

Ich hab aber ne Idee woran es liegen könnte.

Werde das heute Abend nochmal testen und hier über die Ergebnisse berichten.

Verfasst: 30.05.2006, 07:16
von net(t)worker
wenn du javascript auslagerst, wird dies doch vom Browser aufgerufen.... Variabeln, die du vorher in einem php script setzt sind dann nicht mehr verfügbar....

du musst immer bedenken, dass php auf dem Server ausgeführt wird.... javascript erst im browser...

du hast also ein php script, dass auf dem Server ausgeführt wird und HTML zum browser schickt.

der Browser stellt fest dass er ein javascript nachladen muss, wenn javascript aktiviert ist, und stellt eine weitere Anfrage an den Server

der Server sucht sich die timer.php und sendet sie zum browser (und deshalb musst du hier auch die Zeit in der Variabel ablegen)

ist ein logischer fehler der oft passiert wenn man mit php und javascript arbeitet...

Verfasst: 30.05.2006, 19:24
von Indigo
Klappt natürlich wie ich es mir gedacht hab.

Code: Alles auswählen

<script language="JavaScript"> 
var Serverzeit = new Date&#40;"<?php echo$Javascriptzeit; ?>"&#41;; 
</script>
Muss in der PHP Datei bleiben.

Verfasst: 31.05.2006, 21:35
von Indigo
Was mich etwas irritiert...

Die Uhr geht falsch. Zumindest geht sie mit fortlaufender Zeit immer mehr nach.

Kann jemand der etwas Ahnung von Java Script hat mal über das Script drüberschauen ?

Hab das Script nämlich nicht selber geschrieben und kenne mich mit Java Script auch nicht wirklich aus.

Verfasst: 31.05.2006, 22:09
von net(t)worker
die Uhr geht sicher richtig.... welche Zeitzone ist denn deine serverzeit...

Verfasst: 01.06.2006, 07:16
von Indigo
Das meine ich nicht.

Habe die Uhr mal gestartet und ne halbe Stunde laufen lassen.

Dann nochmal mit der aktuellen Serverzeit verglichen.

Dabei ging die Uhr im Java Script schon ca. 20 Sekunden nach.

Verfasst: 01.06.2006, 09:01
von mcchaos
Willkommen bei den "Nicht-Echtzeit-Betriebssystemen" :wink:

Das JavaScript wird nur ausgeführt, wenn der Browser gerade Zeit dazu hat. Und der Browser wird nur ausgeführt, wenn das Betriebssystem gerade Zeit dazu hat. Wenn gerade ein anderes Programm die CPU hat, muß der Browser eben warten.

Eine andere Möglichkeit sehe ich nur, die Client-Zeit mittels Date() abzufragen. Oder per Ajax ab und zu die aktuelle Serverzeit abzuholen. Oder die Serverzeit anfangs mit Date() abzugleichen und immer die Differenz nehmen, wenn Du unbedingt die Serverzeit haben möchtest.

Verfasst: 02.06.2006, 18:47
von Indigo
Wie könnte man das mit Ajax realisieren ?

Verfasst: 04.06.2006, 15:32
von mcchaos
Hm, bin jetzt leider (noch...) nicht der Held in Ajax. Aber prinzipiell kann man damit ja eine Datei vom Server anfordern. Und statt diese eben in einen DIV-Container zu stecken und anzuzeigen, sollte es auch möglich sein, diese in JavaScript zu bearbeiten. D.h. die Datei vom Server enthält einfach die aktuelle Zeit.

Für das Abholen gibt es wohl schon diverse freie Frameworks, die die üblichen Browserungleichheiten ausbügeln. Aber evtl. kann Dir jemand anders hier weiterhelfen?!