Verständnisproblem: Return bei JS
Freddy
- javascript
0 Jörg Peschke0 Freddy0 Ingo Turski0 wahsaga0 Jörg Peschke
Hallo,
was Return bewirkt ist mir bekannt. Allerdings ist für micht die
Schreibweise in JavaScript ungewohnt.
Mich würde interessieren was das "return true;" in dieser
Anweisung bewirkt
<a href="datei.htm" onmouseover="status='Das ist ein Verweis';return true;">Verweis</a>
Siehe:
http://de.selfhtml.org/javascript/objekte/window.htm#status
Zu dem Beispiel dort wird ja auch geschrieben das es wichtig ist bei solchen Konstrukten die Anweisung return true am Ende anzugeben.
Kann mir jemand erklären wieso?
Danke schonmal!
Moin,
<a href="datei.htm" onmouseover="status='Das ist ein Verweis';return true;">Verweis</a>
Afaik, sagst Du mit "return true" der JavaScript-Engine, dass das Event "onmouseover" bereits abgearbeitet wurde, und nicht mehr weiterverarbeitet werden soll.
Gruesse,
Joerg
Moin,
<a href="datei.htm" onmouseover="status='Das ist ein Verweis';return true;">Verweis</a>
Afaik, sagst Du mit "return true" der JavaScript-Engine, dass das Event "onmouseover" bereits abgearbeitet wurde, und nicht mehr weiterverarbeitet werden soll.
Gruesse,
Joerg
Thx
Hi,
Moin,
<a href="datei.htm" onmouseover="status='Das ist ein Verweis';return true;">Verweis</a>
Afaik, sagst Du mit "return true" der JavaScript-Engine, dass das Event "onmouseover" bereits abgearbeitet wurde, und nicht mehr weiterverarbeitet werden soll.
nein. Das ist hier nur die halbe Wahrheit und verschweigt das wichtigste.
return beendet eine Javascriptfunktion. Der Rückgabewert ist in diesem Fall jedoch entscheidend.
Bei false würde der HTML-Link nicht mehr ausgeführt, bei true schon.
Beim Öffnen eines Popups über onclick sollte das Script jedoch false zurückliefern, da in diesem Fall - bei korrektem Öffnen des Popups - dem HTML-Link eben nicht gefolgt werden soll.
freundliche Grüße
Ingo
hi,
<a href="datei.htm" onmouseover="status='Das ist ein Verweis';return true;">Verweis</a>
return beendet eine Javascriptfunktion. Der Rückgabewert ist in diesem Fall jedoch entscheidend.
Bei false würde der HTML-Link nicht mehr ausgeführt, bei true schon.
der event in diesen beispiel ist onmouseover, hat also mit der ausführung des links nichts zu tun.
gruß,
wahsaga
Moin nochmal,
der event in diesen beispiel ist onmouseover, hat also mit der ausführung des links nichts zu tun.
seh ich eigentlich auch so.
Wie ich das verstehe, ist es doch so:
Bei einem normalen Überfahren eines Links (ohne dass ein "onmouseover" gesetzt wird), wird ja bei den meisten Browsern der Link in der Statuszeile angezeigt.
Wenn ich im Beispiel oben einen onmouseover-Handler setze, und KEIN true zurückliefere, passiert imO folgendes
Überfahren des Links
onmouseover wird getriggert -> Statuszeile: "Dies ist ein Verweis"
Default-Verhalten vom Browser wird getriggert: Statuszeile: "datei.htm"
Ich würde also den Effekt gar nicht beobachten können, weil die Statuszeile sofort durch das Default-Event-Handling des Browsers überschrieben würde.
Durch Rückgeben von "true" teile ich dem Browser mit, dass ich das Event "überfahre Link" bereits mit "onmouseover" abgefangen und verarbeitet habe, sodaß seine Standard-Aktion ("Einblenden der referenzierten Datei") nicht mehr ausgeführt wird.
Oder versteh ich da das Eventmodell falsch?
Gruesse,
Joerg
hi,
Ich würde also den Effekt gar nicht beobachten können, weil die Statuszeile sofort durch das Default-Event-Handling des Browsers überschrieben würde.
ja, scheint mir korrekt.
Durch Rückgeben von "true" teile ich dem Browser mit, dass ich das Event "überfahre Link" bereits mit "onmouseover" abgefangen und verarbeitet habe, sodaß seine Standard-Aktion ("Einblenden der referenzierten Datei") nicht mehr ausgeführt wird.
Oder versteh ich da das Eventmodell falsch?
weiß ich nicht - ich finde es nur unkonsequent an dieser stelle.
wenn ich beispielsweise beim abschicken eines formulars das standard-handling - also das absenden des request an das per action angebene ziel - im onSubmit-handler abbrechen will, muss ich dort _false_ zurückgeben, um die weitere abarbeitung des events "submit-button wurde geklickt" bzw. "formular wurde per enter abgeschickt" zu unterbrechen.
warum das bei der onmouseover/window.status-geschichte genau anders herum ist, will mir auf den ersten blick nicht einleuchten.
gruß,
wahsaga
Hi,
warum das bei der onmouseover/window.status-geschichte genau anders herum ist, will mir auf den ersten blick nicht einleuchten.
stimmt. Noch seltsamer wird es bei onclick in einem seiteninternen Link auf "#".
Mit false wird der Statustext dauerhaft geändert (die HTML-Funktion wie bei onsubmit nicht ausgeführt), mit true (nach dem Ankersprung) jedoch nur solange die Maus außerhalb des Links ist.
freundliche Grüße
Ingo
Hi,
Wenn ich im Beispiel oben einen onmouseover-Handler setze, und KEIN true zurückliefere, passiert imO folgendes
Überfahren des Links
onmouseover wird getriggert -> Statuszeile: "Dies ist ein Verweis"
Default-Verhalten vom Browser wird getriggert: Statuszeile: "datei.htm"
Fast richtig.
Überfahren des Links
onmouseover wird getriggert -> der Javascript-Interpreter sieht in der Konfiguration, daß vom User das Überschreiben der Statuszeile per Javascript verboten wurde.
Default-Verhalten vom Browser wird getriggert: Statuszeile: "datei.htm"
;-) SCNR
cu,
Andreas