Zitat:
Zitat von great_smith
So sieht der Befehl aus:
href="javascript:goppi('lieder.html#hanne', 300, 500)">Lieder</a>
|
Wenn du weiter im Code nachschaust, findest du wahrscheinlich etwas, was ungefähr so aussieht:
Code:
function goppi(adresse, breite, hoehe){
win=window.open(blablablabla);
// möglicherweise andere Befehe
}
(Möglicherweise steht dieser Code in einer externen Datei.)
Dieser Code definiert eine Funktion, denn die Funktion goppi() wird mit JavaScript eigentlich nicht "mitgeliefert". Zwischen { und } stehen dann die Befehle, die ausgeführt werden sollen, wenn goppi() sonstwo im Code steht.
In der Funktion steht wieder mal die Funktion window.open(), die in klientseitigem JavaScript schon sozusagen "vordefiniert" ist.
Der Link enthält keine echte Adresse, sondern einen JavaScript-Befehl. Wird der Link angeklickt, wird der Befehl ausgeführt: er ruft die Funktion goppi auf, die wiederum window.open aufruft.
Nightlines Alternativ macht eine zusätzliche Funktion überflüssig. Allerdings würde ich sie so nicht 1:1 übernehmen, aber jetzt mal der Reihe nach.
Das Attribut onclick ist ein sogenannter Event-Handler. Er wartet darauf, dass das Element (hier ein Link) angeklickt wird und führt JavaScript-Befehle aus. Also zum Beispiel window.open(), etwa so:
Code:
onclick="window.open('seite.html','bla','width=400,height=300,left=0,top=0,scrollbars=0,toolbar=no,resizable=0');"
Und das bewirken die verschiedenen Elemente:
window.open -- so heißt die Funktion
( -- im Folgenden werden die Parameter genannt
'seite.html' -- diese Seite wird ins neuen Fenster geladen
'bla' -- so heißt das Fenster. Ist ein Fenster mit diesem Namen schon offen, wird kein neues Fenster aufgemacht (wichtig, um ein Desktop-Durcheinander zu verhindern!)
'width=
bis resizable=0' -- die Features, also wie das Fenster aussehen soll
) -- Ende der Parameterliste
; -- Ende des JavaScript-Befehls
Die Features im Einzelnen:
width=400 -- die Breite des Fensters
height=300 -- die Höhe des Fensters
left=0,top=0 -- die Position des Fensters (hier oben links)
scrollbars=0 -- keine Scrollbalken
toolbar=0 -- keine Werkzeugleiste
resizable=0 -- der User kann die Fenstergröße nicht ändern
Wenn im <a>-Tag auch noch ein href-Attribut vorhanden ist, können wir auch noch eine Alternative anbieten, wenn JavaScript nicht vorhanden ist -- wichtig für Google und Co. Dann öffnet sich die Seite, halt nicht in einem neuen Fenster:
Code:
<a href="seite.html" onclick="window.open('seite.html',usw bis);">
Ein Problem aber: Wenn dann JavaScript doch eingeschaltet wird, passiert beides: das JavaScript wird ausgeführt, ein neues Fenster macht sich auf, aber dann wird die gewünschte Seite sowohl ins Popup geladen als auch ins Hauptfenster -- nicht wirklich sehr hilfreich. Das JavaScript braucht noch einen Befehl, damit das nicht passiert. Dieser Befehl wird einfach dem onclick-Wert angehängt, also so:
Code:
onclick="window.open(blablabla); return false;"
return false bedeutet für einen Eventhandler: Der Link selbst soll nicht das tun, was er normalerweise machen würde.
Also: JavaScript eingeschaltet = Seite ins Popup
JavaScript ausgeschaltet = Seite ins Hauptfenster, kein Popup
Übrigens: Verwechsele Java und JavaScript nicht. Die beiden haben so gut wie nichts miteinander zu tun.