Supportnet Computer
Planet of Tech

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:

<!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
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

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>

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

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=...

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.

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>

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:

 <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 ;-)

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>

Antwort 12 von rfb

also du hast 2 Dateien, dein Frameset lädt eine davon: datei-01.htm. die sollte dann vieleicht so aussehen:

 <!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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: