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.