Wofür ist 'return=true' ?
Georg Oehl
- javascript
Hallo,
In der Javascript-FAQ von Netscape (http://developer.netscape.com/support/faqs/champions/javascript.html, Frage 3.4) habe ich folgendes entdeckt:
<A HREF="http://www.mirana.com/page1.html" target="_top"
onMouseOver="window.status='Click here for page 1'; return true;"
onMouseOut ="window.status=''; return true;">Click Here!</a>
Mir ist klar, was hier passiert, bloß frage ich mich, wofür jeweils das abschließende "return true;" da ist.
Wer kann's mir erklären ?
Georg
Hi Georg,
für was das in dem konkreten fall gut sein soll, kann ich mir ohne den restlichen code auch nicht vorstellen, meines wissens ist das der ganz normale default (hätte man also auch weglassen können).
Generell hat das was mit dem DOM (document object model) zu tun: gibt ein handler ein false zurück, wird das event nicht weitergereicht (so kann man z.b. mit konstruktionen a la onsubmit="return validator(this);" einen form-feld validator aufrufen, der bei unstimmigkeiten (vergessene pflichteingabe z.b.) ein false zurückgibt um so das versenden des formulars zu verhindern (indem das submit-event gekillt wird).
Ein true hingegen ist sowas wie ein explizites weiterreichen, so nach dem motto: ich habe jetzt das event ausgewertet und gebe es an den nächten weiter, der es evtl. auch auswerten will...
tschau...
/*,*/
Wowbagger
Hallo Georg,
Mir ist klar, was hier passiert, bloß frage ich mich, wofür jeweils das abschließende "return true;" da ist.
Die Bedeutung von return hat dir Wowbagger ja schon erklaert.
return ist ein festes JavaScript-Statement, so wie etwa break oder next innerhalb einer Schleife. Dabei kann dahinter ein Wert notiert werden. So kann man z.B. relativ abstrakte, wiederverwendbare Funktionen schreiben. Beispiel:
function hochDrei(Zahl)
{
return Zahl*Zahl*Zahl;
}
Das kann man dann ganz bequem verwenden in Befehlen wie:
hochDrei(26);
true und false sind spezielle reservierte Rueckgabewerte. Intern entsprechen sie auch Zahlen, aber sie machen den Code besser lesbar. Sinn und Zweck kannst du mal an folgender Funktion sehen:
function allesGeladen()
{
for(i=0;i<document.images.length;i++)
if(! document.images[i].complete)
return false;
return true;
}
Diese Funktion, die prueft, ob alle Bilder einer Seite geladen sind, kann wiederum so eingesetzt werden:
if(allesGeladen())
TuWasTolles();
Was das return true in dem von dir geposteten Beispiel soll, da bin ich mir auch nicht ganz sicher. Ich vermute, damit wird der "Zustand" onMouseover bzw. onMouseout, nachdem er eben nicht mehr aktuell ist, "offiziell" fuer beendet erklaert. Es gibt bei der Event-Programmierung von Netscape immer auch Funktionen namens releaseEvents() - die tun etwas Aehnliches: sie beenden einfach den Zustand einer Ereignisueberwachung explizit, was erforderlich ist, damit die gleiche Ueberwachung wieder von vorne beginnen und neu initialisiert werden kann.
Bei onMouseover und onMouseout machen die Browser das meines Wissens aber alle auch von alleine - ohne die explizite return-Angabe.
viele Gruesse
Stefan Muenz
Salve....
Bei onMouseover und onMouseout machen die Browser das meines Wissens aber alle auch von alleine - ohne die explizite return-Angabe.
Alte Versionen des Internet Explorer (v3.x) erforderten dies meines Wissens nach. Da den aber inzwischen nur noch wenige Prozent aller Surfer verwenden, is das glaube ich in der Tat inzwischen vrnachlässigbar.
Gruß,
Carsten