Supportnet / Forum / Skripte(PHP,ASP,Perl...)
JavaScript-Code
Frage
Ich möchte auf meiner Homepage eine Mitteilung als Html-Seite (gruss.html) nur in der Zeit vom 1.12. bis 31.12. anzeigen lassen. Wer ist so hilfsbereit und teilt mir den entsprechenden JavaScript-Code mit? Danke!
Antwort 1 von rfb
...
<head>
...
<script type="text/javascript">
<!--
function dezember() {
var message = "Willkommen auf meiner Seite im Dezember";
var heut = new Date();
var monat = heut.getMonth();
if (monat==11) document.getElementById("botschaft").data=message;
}
//-->
</script>
</head>
<body onload="dezember()">
<p id="botschaft">Willkommen wann auch immer</p>
...Antwort 2 von regi34
naja das is wohl was einmaliges, sonderlich komplex wird die Änderung wohl auch nciht sein, mach das doch einfach manuell.
Antwort 3 von Kalle
Hi, und danke rfb für deinen schnellen Vorschlag.
Aber ich möchte keinen neuen Text einblenden, sondern mit dem Code eine andere Seite aufrufen, die den Hinweistext und Bilder beinhaltet.
Nochmal zum Ablauf:
In der Startseite meiner Homepage soll sich der Javascript-Code befinden, welcher zum genannten Zeitpunkt die Seite mit der Mitteilung (Grußbotschaft)öffnet. Nach schließen, mit Klick auf den Button [x] der Mitteilung soll man wieder zur Startseite gelangen.
Vielleicht gibt es dafür auch eine Lösung. Danke!
Aber ich möchte keinen neuen Text einblenden, sondern mit dem Code eine andere Seite aufrufen, die den Hinweistext und Bilder beinhaltet.
Nochmal zum Ablauf:
In der Startseite meiner Homepage soll sich der Javascript-Code befinden, welcher zum genannten Zeitpunkt die Seite mit der Mitteilung (Grußbotschaft)öffnet. Nach schließen, mit Klick auf den Button [x] der Mitteilung soll man wieder zur Startseite gelangen.
Vielleicht gibt es dafür auch eine Lösung. Danke!
Antwort 4 von rfb
<script type="text/javascript">
<!--
function dezember() {
var heut = new Date();
var monat = heut.getMonth();
if (monat==11) {
var Fenster1 = window.open("dezembergruss.htm", "Zweitfenster", "width=300,height=400,left=100,top=200");
Fenster1.focus();
}
}
//-->
</script>
</head>
<body onload="dezember()">
Das hin und her mit den Fenstern klappt nicht so ohne weiteres, da dir die meisten PopUp-Blocker dazwischenfunken werden.
Antwort 5 von Kalle
@rfb:
Sieht schon besser aus. Ist aber immer noch nicht, dass was ich mir vorstelle. Ist es nicht möglich, anstatt des PopUps die Seite im Sript direkt über den Code location.href="gruss.html" aufzurufen?
Sieht schon besser aus. Ist aber immer noch nicht, dass was ich mir vorstelle. Ist es nicht möglich, anstatt des PopUps die Seite im Sript direkt über den Code location.href="gruss.html" aufzurufen?
Antwort 6 von Schnoof
Dann kannst Du aber nicht beim Klick auf den Schließen-Button eine andere Seite laden. Wenn ich auf diesen Button klicke, dann schließt sich das Fenster und damit basta. Alles andere dürfte nicht möglich sein (das wäre ein starker Eingriff in die Funktionalität eines Browsers).
Wenn Du per Klick auf einen Link zur ersten Seite zurückgelangen willst, wird dann wieder das Javascript ausgeführt - wäre also eine Endlosschleife. D. h. das müsstest Du um einiges komplexer gestalten. Du müsstest beim ersten Aufruf Deiner Seite abfragen, ob ein bestimmtes Cookie vorhanden ist. Wenn nicht, wird die gruss.html aufgerufen. Ist es schon da, wird gar nichts aufgerufen, aber das Cookie wieder gelöscht (damit beim nächsten Aufruf erneut Deine gruss.html angezeigt werden kann).
Ich persönlich würde für die 31 Tage meine index.html in index1.html umbenennen und die gruss.html als index.html einbinden und entweder per Klick oder Weiterleitung nach 30 s auf die index1.html springen.
Dann haben auch garantiert alle was davon - es soll ja Leute geben, die Javascript deaktivieren.
Bis denne
Schnoof
Wenn Du per Klick auf einen Link zur ersten Seite zurückgelangen willst, wird dann wieder das Javascript ausgeführt - wäre also eine Endlosschleife. D. h. das müsstest Du um einiges komplexer gestalten. Du müsstest beim ersten Aufruf Deiner Seite abfragen, ob ein bestimmtes Cookie vorhanden ist. Wenn nicht, wird die gruss.html aufgerufen. Ist es schon da, wird gar nichts aufgerufen, aber das Cookie wieder gelöscht (damit beim nächsten Aufruf erneut Deine gruss.html angezeigt werden kann).
Ich persönlich würde für die 31 Tage meine index.html in index1.html umbenennen und die gruss.html als index.html einbinden und entweder per Klick oder Weiterleitung nach 30 s auf die index1.html springen.
Dann haben auch garantiert alle was davon - es soll ja Leute geben, die Javascript deaktivieren.
Bis denne
Schnoof
Antwort 7 von Schnoof
PS: Das Cookie wird natürlich beim Aufruf der gruss.html gesetzt.
Antwort 8 von Kalle
@Schnoof:
Ok, hab verstanden. Es wäre aber doch möglich, die Seite über einen Link zu schliessen, der zur Startseite zurück führt. Oder? Wie müsste die Anweisung location.href="gruss.html" in den Code von rfb eigebunden werden?
Ok, hab verstanden. Es wäre aber doch möglich, die Seite über einen Link zu schliessen, der zur Startseite zurück führt. Oder? Wie müsste die Anweisung location.href="gruss.html" in den Code von rfb eigebunden werden?
Antwort 9 von Kalle
Nachtrag:
Ich meine zu einer anderen Seite, die nicht den Code enthält, wegen der Endlosschleife.
Ich meine zu einer anderen Seite, die nicht den Code enthält, wegen der Endlosschleife.
Antwort 10 von rfb
function dezember() {
var heut = new Date();
var monat = heut.getMonth();
if (monat==11) location.href="wohin-auch-immer.htm";
}Antwort 11 von Kalle
Für alle die, die meine Idee nachvollziehen möchten, hier die Lösung in Anlehnung an den Vorschlägen von @rfb und @Schnoof.
Mit Öffnen der Homepage wird eine leere Seite geöffnet, die nur das folgende JavaScript entält. Das wirkt sich nicht negativ auf das Gesamterscheinungsbild der Homepage aus, da sie nur sehr kurz auftaucht und kaum wargenommen wird.
<script language="JavaScript">
<!--
function dezember()
{
var heut = new Date();
var monat = heut.getMonth();
if (monat==11) location.href="gruss.html";
else location.href="runview.html";
}
//-->
</script>
<body onload="dezember()" ... >
Das Script steuert den weiteren Ablauf. Liegt der Zeitraum im Dezember, dann wird die Mitteilung (gruss.html) geladen und ein Link auf dieser Seite führt dann zur eigentlichen Startseite.
Ausserhalb, des vom Script abgefragten Zeitraums, wird die Hommepage gleich mit der Startseite (runview.html) geladen.
Danke für eure Hilfe.
Kalle
Mit Öffnen der Homepage wird eine leere Seite geöffnet, die nur das folgende JavaScript entält. Das wirkt sich nicht negativ auf das Gesamterscheinungsbild der Homepage aus, da sie nur sehr kurz auftaucht und kaum wargenommen wird.
<script language="JavaScript">
<!--
function dezember()
{
var heut = new Date();
var monat = heut.getMonth();
if (monat==11) location.href="gruss.html";
else location.href="runview.html";
}
//-->
</script>
<body onload="dezember()" ... >
Das Script steuert den weiteren Ablauf. Liegt der Zeitraum im Dezember, dann wird die Mitteilung (gruss.html) geladen und ein Link auf dieser Seite führt dann zur eigentlichen Startseite.
Ausserhalb, des vom Script abgefragten Zeitraums, wird die Hommepage gleich mit der Startseite (runview.html) geladen.
Danke für eure Hilfe.
Kalle
Antwort 12 von rfb
allerdings solltest du unbedingt einen Link zur Startseite legen für den Fall, dass JavaScript nicht verfügbar ist.
Dies geht sehr gut mit
irgendwo im body, der noscript-Bereich wird nur bei deaktiviertem JavaScript angezeigt.
Dies geht sehr gut mit
<noscript><a href="runview.html">weiter</a></noscript>irgendwo im body, der noscript-Bereich wird nur bei deaktiviertem JavaScript angezeigt.
Antwort 13 von Kalle
@rfb:
Danke! Werde deine Ergänzung noch einarbeiten.
Danke! Werde deine Ergänzung noch einarbeiten.
Antwort 14 von Kalle
Hi, wie muss ich den nachfolgenden Code ändern, wenn die gruss.html nach Ablauf von 4 sec. öffnen soll?
<script language="JavaScript" type="text/javascript">
<!--
function dezember()
{
var heut = new Date();
var monat = heut.getMonth();
if (monat==11) location.href="gruss.html";
else location.href="runview.html";
}
//-->
</script>
<script language="JavaScript" type="text/javascript">
<!--
function dezember()
{
var heut = new Date();
var monat = heut.getMonth();
if (monat==11) location.href="gruss.html";
else location.href="runview.html";
}
//-->
</script>
Antwort 15 von rfb
<script type="text/javascript">
<!--
var ziel="";
function dezember()
{
var heut = new Date();
var monat = heut.getMonth();
ziel= (monat==11)?"gruss.html":"runview.html";
window.setTimeout("december2()", 4000);
}
function december2() {
location.href=ziel;
}
//-->
</script>
Antwort 16 von Kalle
Hi, rfb!
Danke für den Code, aber er funktioniert bei mir leider nicht. Kann es an der JavaScript-Version liegen? Ich verwende IE 5.5.
MfG
Danke für den Code, aber er funktioniert bei mir leider nicht. Kann es an der JavaScript-Version liegen? Ich verwende IE 5.5.
MfG
Antwort 17 von rfb
bei mir funktionierts einwandfrei (IE6, Opera8.5, Firefox1.5), da im IE die genutzten Funktionen ab Vers3 vorhanden waren sollte der IE5.5 die auch kennen.
Tippfehler?
Überschneidung mit anderen JS-Programmen?
Poste mal deinen Code.
Tippfehler?
Überschneidung mit anderen JS-Programmen?
Poste mal deinen Code.
Antwort 18 von rfb
ach ja - zum Testen von JavaScript kann ich nur den Mozilla-Firefox empfehlen.
Wenn du deine frisch programmierte Seite dort lädst und dann entweder
oder
ins Menü
öffnet sich ein neues Fenster in dem die Fehlermeldungen halbwegs verständlich angezeigt werden.
Wenn du deine frisch programmierte Seite dort lädst und dann entweder
javascript: in der Adresszeile eintippstoder
ins Menü
Extras/JavaScript-Konsole gehstöffnet sich ein neues Fenster in dem die Fehlermeldungen halbwegs verständlich angezeigt werden.
Antwort 19 von Kalle
Bei mir auf der Seite steht nur dieser Code und in der der Statusleiste wird "Fehler auf dieser Seite" angezeigt. Habe alles so übernommen.
Der unter Antwort 14 eingefügte Code funktioniert einwandfrei.
Der unter Antwort 14 eingefügte Code funktioniert einwandfrei.
Antwort 20 von rfb
Zitat:
Poste mal deinen Code.
oder besorg dir Firefox und verfahre nach A18, alles andere ist jetzt vertane Zeit (die IE-Fehlermeldungen sind MS-typisch: absolut richtig aber in keiner Weise weiterhelfend).Poste mal deinen Code.
Antwort 21 von rfb
aber vielleicht hilft es ja schon, wenn du den Code in dieser verkürzten Form reinsetzt (kürzerer Code = weniger Fehlermöglichkeiten):
Hier werden nun die 4 Sec. gleich im onload-Aufruf abgewartet, dadurch ist die globale Variable
Achtung: die ´ sind die einf. Anführungszeichen, die neben dem Ä auf der Tastatur, die Supportnet-Software setzt hier andere Zeichen ein.
<html>
<head>
<script type="text/javascript">
<!--
function dezember()
{
var heut = new Date();
var monat = heut.getMonth();
location.href= (monat==11)?"gruss.html":"runview.html";
}
//-->
</script>
</head>
<body onload="window.setTimeout(´dezember()´, 4000)">
</body>
</html>Hier werden nun die 4 Sec. gleich im onload-Aufruf abgewartet, dadurch ist die globale Variable
ziel entbehrlich. Erfolgreich getestet nun auch auf meinem alten Büro-Compi mit IE5!Achtung: die ´ sind die einf. Anführungszeichen, die neben dem Ä auf der Tastatur, die Supportnet-Software setzt hier andere Zeichen ein.
Antwort 22 von Kalle
@rfb:
Unverständlicherweise funktioniert deine abgespeckte Version. Danke!
Unverständlicherweise funktioniert deine abgespeckte Version. Danke!
Antwort 23 von rfb
Zitat:
Unverständlicherweise
Unverständlicherweise
Zitat:
kürzerer Code = weniger Fehlermöglichkeiten
;-)kürzerer Code = weniger Fehlermöglichkeiten
Antwort 24 von Kalle
Was ist besser? Den Pfad von Links und von Bildern auf WEB-Seite absolut oder relativ anzugeben?
MfG
MfG
Antwort 25 von rfb
das ist jetzt
- keine JavaScript-Frage
und hat
- mit dem Thema diesen Threads nix zu tun
Stell doch bitte eine solche Frage in einem eigenen Thread - die Wahrscheinlichkeit dass du eine Antwort bekommst erhöht sich, da hier ja nun bloß JS-Freaks herumtreiben, deine Frage aber HTML und andere Internettechniken betrifft, JS aber nur am Rande,
- keine JavaScript-Frage
und hat
- mit dem Thema diesen Threads nix zu tun
Stell doch bitte eine solche Frage in einem eigenen Thread - die Wahrscheinlichkeit dass du eine Antwort bekommst erhöht sich, da hier ja nun bloß JS-Freaks herumtreiben, deine Frage aber HTML und andere Internettechniken betrifft, JS aber nur am Rande,

