Supportnet / Forum / Webseiten/HTML
Refresh bei Uhrzeit
Frage
Hallo Leute,
heute wollte ich mal eine Frage stellen, satt zu beantworten. Ich möchte ein refresh in eine Seite einbauen, bei dem der "content" mit Sekunden sondern mit einer Uhrzeit angegeben wird.
Ich habe mir schon die finger wund gegoogelt und selbst versucht zu basteln, allerdings mit java script.
Ihr würdet mir das Wochenende sehr versüßen. :-D
Danke!
Antwort 1 von rfb
gerade 2 Kuchen gebacken, aber nun noch schnell ein süßes script:
entweder heut oder am nächsten Tag (+86400000Milliseks.) um 17:44:00 lädt das Script die Seite neu, zumindest eben hats geklappt.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Seite</title>
<meta http-equiv="content-script-type" content="text/javascript">
<script type="text/javascript">
<!--
function neuladen(h,m,s) {
var jetzt = new Date();
var Std = jetzt.getHours();
var Min = jetzt.getMinutes();
var Sekunden = jetzt.getSeconds();
var warten = Date.UTC(1980,0,1,h,m,s) - Date.UTC(1980,0,1,Std,Min,Sekunden)
warten += (warten>0) ? 0 : 86400000;
alert(warten);
var aktiv = window.setInterval("losgehts()",warten );
}
function losgehts() {
location.reload();
}
//-->
</script>
</head>
<body onload="neuladen(17,44,00)">
los gehts!
</body>
</html>entweder heut oder am nächsten Tag (+86400000Milliseks.) um 17:44:00 lädt das Script die Seite neu, zumindest eben hats geklappt.
Antwort 2 von rfb
PS: die Zeile
solltest du wieder löschen, die diente nur zu Testzwecken.
alert(warten);solltest du wieder löschen, die diente nur zu Testzwecken.
Antwort 3 von Die_Andrea
Hallo Fritz,
das trifft sich ja gut, hatte heute schoko-cookies gebacken. aber egal.
Ich habe Deine Lösung ausprobiert, irgendwie funzte das nicht. Probiere das aber gleich nochmal. Bin aber dennoch total begeistert von Deiner Hilfe. DANKE! Darf ich nochmal? :-D
Ich habe nämlich in der Zwischenzeit das Problem konkretisiert, bzw. erweitert. Ich möchte, das wäre das eleganteste, in einem Frame zu Tageszeit (zwischen 8:30h und 18:30h) und Nachzeit (zwischen 18:30h-08:30h) jeweils eine verschiedene Seite zeigen lassen.
Die "frame.html" zeigt "navigation.html" und dann je nach Tages/Nachtzeit die day.html oder night.html.
Weisst Du was ich meine?
Liebe Grüße
das trifft sich ja gut, hatte heute schoko-cookies gebacken. aber egal.
Ich habe Deine Lösung ausprobiert, irgendwie funzte das nicht. Probiere das aber gleich nochmal. Bin aber dennoch total begeistert von Deiner Hilfe. DANKE! Darf ich nochmal? :-D
Ich habe nämlich in der Zwischenzeit das Problem konkretisiert, bzw. erweitert. Ich möchte, das wäre das eleganteste, in einem Frame zu Tageszeit (zwischen 8:30h und 18:30h) und Nachzeit (zwischen 18:30h-08:30h) jeweils eine verschiedene Seite zeigen lassen.
Die "frame.html" zeigt "navigation.html" und dann je nach Tages/Nachtzeit die day.html oder night.html.
Weisst Du was ich meine?
Liebe Grüße
Antwort 4 von Die_Andrea
Ein bisschen was gefunden habe ich ja, aber nach Formatierung der Uhrzeit HH:MM:SS funktioniert das ganze net mehr. Also wer helfen möchte, ich hätte da eine googlemail.com adresse zu vergeben. :-)
<script type="text/javascript" language="JavaScript">
<!--
var now = new Date()
var Uhrzeit=now.getHours()
if (Uhrzeit >= 10 & Uhrzeit <= 18)
{
this.location.href="datei-01.htm";
} else {
this.location.href="datei-02.htm";
}
//-->
</script>
<script type="text/javascript" language="JavaScript">
<!--
var now = new Date()
var Uhrzeit=now.getHours()
if (Uhrzeit >= 10 & Uhrzeit <= 18)
{
this.location.href="datei-01.htm";
} else {
this.location.href="datei-02.htm";
}
//-->
</script>
Antwort 5 von rfb
bei dem Script bleibt das Problem des Aufrufs - und dann ist die if-Abfrage überflüssig.
Bei meinem scheint ein Problem bei übergroßen Wartezeiten (also ca. 24 h) zu liegen, die JavaScript Funktionen setInterval und SetTimeout scheinen das intern zu kürzen.
Mal sehen was sich damit noch machen lässt - allerdings werde ich heute nur wenig Zeit dafür haben (Familienfeier - daher die Kuchen ;-)
Wenn du bei deinem Script davon ausgehst, dass die Seite nur einmal geöffnet wird, kannst du es aber so einbinden
im head:
<script type="text/javascript" language="JavaScript">
<!--
function laden() {
var now = new Date()
var Uhrzeit=now.getHours()
if (Uhrzeit >= 10 & Uhrzeit <= 18)
{
this.location.href="datei-01.htm";
} else {
this.location.href="datei-02.htm";
}
}
//-->
</script>
und im body:
<body onload="laden()">
das müsste in der Seite stehen, die dann im Frame stehen soll, wenn kein JavaScript verfügbar ist.
Nun auf zur Feier
Bei meinem scheint ein Problem bei übergroßen Wartezeiten (also ca. 24 h) zu liegen, die JavaScript Funktionen setInterval und SetTimeout scheinen das intern zu kürzen.
Mal sehen was sich damit noch machen lässt - allerdings werde ich heute nur wenig Zeit dafür haben (Familienfeier - daher die Kuchen ;-)
Wenn du bei deinem Script davon ausgehst, dass die Seite nur einmal geöffnet wird, kannst du es aber so einbinden
im head:
<script type="text/javascript" language="JavaScript">
<!--
function laden() {
var now = new Date()
var Uhrzeit=now.getHours()
if (Uhrzeit >= 10 & Uhrzeit <= 18)
{
this.location.href="datei-01.htm";
} else {
this.location.href="datei-02.htm";
}
}
//-->
</script>
und im body:
<body onload="laden()">
das müsste in der Seite stehen, die dann im Frame stehen soll, wenn kein JavaScript verfügbar ist.
Nun auf zur Feier
Antwort 6 von rfb
muss mich korrigieren - mit Settimeout scheints doch zu klappen, also Aufruf mit:
window.setTimeout("losgehts()",warten );
statt der zeile mir var aktiv=...
window.setTimeout("losgehts()",warten );
statt der zeile mir var aktiv=...
Antwort 7 von Die_Andrea
Okay, das scheint jetzt schon sehr gut zu funktionieren. Nur habe ich immer noch das Problem, dass die Seite nicht zu einer vollen Uhrzeit (wie 8h) sondern um 8:30h und um 18:30 automatisch umspringen soll.
Bedeutet also konkret: die Seite ist den ganzen Tag auf und muss sich von selbst aktualisieren. Ich versuche das ganze mal in Kombination von beiden Skipten, allerdings wäre eine Lösung viel eleganter. Die wäre
if (Uhrzeit >= 8:30 & Uhrzeit <= 18:30)
else ....
Aber das funzt ja leider nicht. Bis später.
Bedeutet also konkret: die Seite ist den ganzen Tag auf und muss sich von selbst aktualisieren. Ich versuche das ganze mal in Kombination von beiden Skipten, allerdings wäre eine Lösung viel eleganter. Die wäre
if (Uhrzeit >= 8:30 & Uhrzeit <= 18:30)
else ....
Aber das funzt ja leider nicht. Bis später.
Antwort 8 von Die_Andrea
Nachtrag:
oder man baute nur dieses Skipt auf HH:MM:SS um, und setzt den meta tag content="1". Dann prüft die Zeite selbstständig, wieviel Uhr es ist und leitet ggf. selbst auf die day/night.html. Aber dazu muss ich ja die var Minute und var Sekunde noch einbauen. Daran scheitere ich aber derzeit.
<script type="text/javascript" language="JavaScript">
<!--
function laden() {
var now = new Date()
var Uhrzeit=now.getHours()
if (Uhrzeit >= 10 & Uhrzeit <= 18)
{
this.location.href="datei-01.htm";
} else {
this.location.href="datei-02.htm";
}
}
//-->
</script>
oder man baute nur dieses Skipt auf HH:MM:SS um, und setzt den meta tag content="1". Dann prüft die Zeite selbstständig, wieviel Uhr es ist und leitet ggf. selbst auf die day/night.html. Aber dazu muss ich ja die var Minute und var Sekunde noch einbauen. Daran scheitere ich aber derzeit.
<script type="text/javascript" language="JavaScript">
<!--
function laden() {
var now = new Date()
var Uhrzeit=now.getHours()
if (Uhrzeit >= 10 & Uhrzeit <= 18)
{
this.location.href="datei-01.htm";
} else {
this.location.href="datei-02.htm";
}
}
//-->
</script>
Antwort 9 von rfb
Moin, moin
ich habe keine Ahnung, was du mit dem meta-tag-content meinst.
Die Minuten und Sekunden kannst du wie folgt einfügen:
also die letzten 3 Zahlen in den UTC-Klammern sind die Std, Min, Sek.
Funktionsweise: UTC liefert die Milliseks seit dem 1.1.70, die berechnen wir für die 3 Zeiten (jetzt sowie 10:30 und 18:30) an einem beliebigen Tag (1.1.80 - kannst aber auch deinen Geburtstag einsetzen, Hauptsache in allen 3 UTC-Klammern ist es derselbe Tag) und vergleichen sie miteinander.
Auf zum Joggen!
ich habe keine Ahnung, was du mit dem meta-tag-content meinst.
Die Minuten und Sekunden kannst du wie folgt einfügen:
<script type="text/javascript" language="JavaScript">
<!--
function laden() {
var now = new Date();
var Std=now.getHours();
var Min = now.getMinutes();
var Sek = now.getSeconds();
var jetzt = Date.UTC(1980,0,1,Std,Min,Sek);
if (jetzt>Date.UTC(1980,0,1, 10,30,0) & jetzt < Date.UTC(1980,0,1, 18,30,0))
{
this.location.href="datei-01.htm";
} else {
this.location.href="datei-02.htm";
}
}
//-->
</script>also die letzten 3 Zahlen in den UTC-Klammern sind die Std, Min, Sek.
Funktionsweise: UTC liefert die Milliseks seit dem 1.1.70, die berechnen wir für die 3 Zeiten (jetzt sowie 10:30 und 18:30) an einem beliebigen Tag (1.1.80 - kannst aber auch deinen Geburtstag einsetzen, Hauptsache in allen 3 UTC-Klammern ist es derselbe Tag) und vergleichen sie miteinander.
Auf zum Joggen!
Antwort 10 von rfb
PS
Zitat:
kannst aber auch deinen Geburtstag einsetzen
vorausgesetzt der ist nach dem 1.1.70 ;-)kannst aber auch deinen Geburtstag einsetzen
Antwort 11 von Die:_Andrea
Okay, es funktioniert gut, aber nicht ganz perfekt. Dennoch danke ich Dir sehr, dass Du mir bis hierhin geholfen hast! Was würdest Du an unterem Skript ändern damit es funktioniert? Ich dachte an Dein erstes Skript, der refresh der Seite, der sich zu 8:30 und 18:30 ausführt. Selbstständig. Hierbei solltest Du wissen, die Seite ist mehr als 24Std. geöffnet.
<script type="text/javascript">
<!--
var jetzt = new Date();
var Std = jetzt.getHours();
var Min = jetzt.getMinutes();
var Sekunden = jetzt.getSeconds();
if (jetzt>Date.UTC(1980,0,1, 08,30,0) & jetzt < Date.UTC(1980,0,1, 18,30,0))
window.setTimeout("losgehts()");
function losgehts() {
location.reload();
}
//-->
</script>
<script type="text/javascript">
<!--
var jetzt = new Date();
var Std = jetzt.getHours();
var Min = jetzt.getMinutes();
var Sekunden = jetzt.getSeconds();
if (jetzt>Date.UTC(1980,0,1, 08,30,0) & jetzt < Date.UTC(1980,0,1, 18,30,0))
window.setTimeout("losgehts()");
function losgehts() {
location.reload();
}
//-->
</script>
Antwort 12 von rfb
also du hast 2 Dateien, dein Frameset lädt eine davon: datei-01.htm. die sollte dann vieleicht so aussehen:
datei-02.htm entsprechend:
dann prüft jede Datei alle 3600000 Millisekunden (kannst du beliebig anpassen - je kleiner die Zahl desto genauer der Übergang und desto höher die Rechnerbelastung) ob die 10:30 bzw 18:30 Grenze überschritten ist und lädt dann entsprechend die andere.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Seite</title>
<meta http-equiv="content-script-type" content="text/javascript">
<script type="text/javascript">
<!--
function start() {
laden();
var aktiv = window.setInterval("laden()",3600000);
}
function laden() {
var now = new Date();
var Std=now.getHours();
var Min = now.getMinutes();
var Sek = now.getSeconds();
var jetzt = Date.UTC(1980,0,1,Std,Min,Sek);
if (jetzt>Date.UTC(1980,0,1, 10,30,0) & jetzt<Date.UTC(1980,0,1, 18,30,0))
this.location.href="datei-02.htm";
}
//-->
</script>
</head>
<body onload="start()">
los gehts!
</body>
</html>datei-02.htm entsprechend:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Seite</title>
<meta http-equiv="content-script-type" content="text/javascript">
<script type="text/javascript">
<!--
function start() {
laden();
var aktiv = window.setInterval("laden()",3600000);
}
function laden() {
var now = new Date();
var Std=now.getHours();
var Min = now.getMinutes();
var Sek = now.getSeconds();
var jetzt = Date.UTC(1980,0,1,Std,Min,Sek);
if (jetzt<=Date.UTC(1980,0,1, 10,30,0) || jetzt>=Date.UTC(1980,0,1, 18,30,0))
this.location.href="datei-01.htm";
}
//-->
</script>
</head>
<body onload="start()">
los gehts!
</body>
</html>dann prüft jede Datei alle 3600000 Millisekunden (kannst du beliebig anpassen - je kleiner die Zahl desto genauer der Übergang und desto höher die Rechnerbelastung) ob die 10:30 bzw 18:30 Grenze überschritten ist und lädt dann entsprechend die andere.
Antwort 13 von Die_Andrea
Jajaja. Es funktionuckelt. Daaaanke. Und toll ist, dass wir das Problem gelöst und für andere verfügbar gemacht haben. Denn die meisten Probleme werden entweder per email ausgetauscht oder gar nicht richtig zuendegeschrieben. Hervorragend. :-D Danke dir Fritz.

