Workshop Internet-Präsenz
Eingriff in das Browser-Standardverhalten mit "return true" bzw. "return false"
Normalerweise genügt es für eine Ereignisbearbeitung, ein Ereignisattribut in das gewünschte Tag einzutragen, als Attribut-Wert wird eine Liste von Befehlen eingetragen, die durch Semikolon zu trennen sind.
Beispiel: <body onload="alert('Los geht\'s');">
Problematischer wird es, wenn man in das Standardverhalten des Browsers eingreifen muss,
d.h., dies in der Regel verhindern will. Dies lässt sich mit zusätzlichen
Befehlen wie "return true"
oder "return false"
steuern.
In der Regel bedeutet "return true"
oder keine Angabe, dass das
Standardverhalten beibehalten werden soll; "return false"
unterdrückt
das Standardverhalten. Aber keine Regel ohne Ausnahme, wie unten gezeigt wird.
Typische Ereignisse, bei denen das Standardverhalten unterdrückt werden soll, sind
onsubmit
, onchange
, onclick
, onmouseover
,
onmouseout
, onfocus
und onblur
.
Beispiel: <a href="url" onclick="return false;">
Wenn JavaScript aktiviert ist, wird der Link nicht ausgeführt!
Wenn man das Beispiel etwas erweitert, wird es sogar sinnvoll:
<a href="noJavaScript.html"
onclick="doJavaScriptNavigation();return false;">
Eine sehr wichtige Anwendung ist die clientseitige Überprüfung von Formularen, wie im folgenden Beispiel demonstriert werden soll:
<head> ... <script language="JavaScript" type="text/javascript"> function checkForm() { // Programmteile zur Überprüfung if (allOk) { return true } else { return false }; } </script> </head> <body> <form action="..." onsubmit="return checkForm();"> ... </form> </body>
Verwirrenderweise ist die Definition bei Mausereignissen gerade umgekehrt:
"return true"
verhindert das Standardverhalten.
Dies betrifft den bekanntesten Einsatzfall: das Eintragen von Informationen in die Statuszeile beim Überfahren eines Links. Das Standardverhalten ist: Eintragen der mit einem Link verbundenen URL; anstelle dessen soll eine Information eingetragen werden.
Beispiel:
<a href="url"
onmouseover="window.status='Text';return true;"
onmouseout="window.status='';return true;">
Im Falle von
<a href="url" onmouseover="alert('Text');">
braucht man kein "return true"
anzugeben, weil die Darstellung des
Meldungsfensters das Browser-Standardverhalten nicht berührt.