Browserabsturz durch Eventhandler (Opera, IE)
WauWau
- javascript
Hallo,
Bitte mal folgendes als .html/.htm-Datei speichern:
------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Browserabsturz IE</title>
<script language="JavaScript">
function mouse(e, state)
{
// e = übergebenes [this]
// state = 0 -> Aufruf weil Maus runter ist
// 1 -> Aufruf weil Maus drauf ist
if(state == 1)
e.style.backgroundColor = "#D8E2EF";
else
e.style.backgroundColor = "#BED0E5";
}
function focus(e, state, prevalue)
{
// e, state => wie in mouse()
// prevalue = true -> "(optional)"-Text war vorher da
// false-> Textfeld war vorher leer
if(state == 1)
e.style.backgroundColor = "#D8E2EF";
else
e.style.backgroundColor = "#BED0E5";
}
</script>
</head>
<body>
<p>Hier könnte <i>Kontakt</i> oder <i>E-Mail</i> stehen, auf jeden Fall aber finde ich einen sogenannten <i>Form-Mailer</i> besser als einen E-Mail-Link, ganz abgesehen davon, dass es Programme (sogenannte <i>Robots</i>) gibt, die das Internet nach E-Mail-Adressen durchsuchen - und ihnen dann Spam zuschicken. Du kannst von Glück reden, dass du keinen Spam bekommst (wieso eigentlich nicht?)</p>
<form action="kontakt-done.php" method="post">
<table id="kontakt">
<tr>
<th>Name:</th>
<td><input name="absender" type="text" class="text" onMouseover="mouse(this,1);" onMouseout="mouse(this,0);" onFocus="focus(this, 1);" onBlur="focus(this,0);" /></td>
</tr>
<tr>
<th>E-Mail:</th>
<td><input name="email" type="text" class="text" onMouseover="mouse(this, 1);" onMouseout="mouse(this, 0);" onFocus="focus(this, 1);" onBlur="focus(this, 0, true);" value="(optional)" /></td>
</tr>
<tr>
<th>Betreff:</th>
<td><input name="betreff" type="text" class="text" onMouseover="mouse(this, 1);" onMouseout="mouse(this, 0);" onFocus="focus(this, 1);" onBlur="focus(this, 0, true);" value="(optional)" /></td>
</tr>
<tr>
<th>Nachricht:</th>
<td><textarea name="text"></textarea></td>
</tr>
<tr>
<th> </th>
<td><input type="submit" class="button" value="abschicken" /> <input type="reset" class="button" value="leeren" /></td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------------------------------------------------
Das CSS habe ich mal rausgelassen.
So, wenn man nun das Texteingabefeld Name anklickt, funktioniert noch alles so wie es soll. Verlässt man es jedoch, und klickt auf das E-Mail-Eingabefeld, springt der Cursor zwischen beiden Feldern rum.
Mein Opera 7.03 hats sogar noch geschafft, beim KLick auf "Betreff" zwischen 3 Feldern rumzuspringen, danach hatn auch er sich aufgehängt.
Der IE6 hat sich schon nach 2 Eingabefeldern (wie oben beschrieben) aufgehängt.
Was ist hier etwa falsch?
Was muss hier geändert werden?
Vielen dank,
WauWau
Hi,
function focus(e, state, prevalue)
Ungünstiger Funktionsname, der dürfte mit der vordefinierten focus-Funktion Ärger bereiten.
cu,
Andreas
Hi andreas,
function focus(e, state, prevalue)
Ungünstiger Funktionsname, der dürfte mit der vordefinierten focus-Funktion Ärger bereiten.
stimmt! Daran habe ich jetzt _überhauptnicht_ gedacht! Danke, ich werd's gleich ändern.
WauWau