Axel Richter: Kein focus() bei Firefox und Mozilla

Beitrag lesen

Hallo,

Trotzdem hätte ich gerne gewusst, warum Firefox und Mozilla den Focus nicht auf das Input-Feld setzen - einfach, um es zu verstehen.

So, wie ich das sehe, wird das schon versucht, es scheitert aber.

Oder meintest du, dass Firefox focus-Anweisungen innerhalb einer Funktion ignoriert, die mit onBlur aufgerufen wird?
Sozusagen um logische Unzulänglichkeiten auszugleichen?

Nein, wohl nicht explizit so programmiert, aber als (un)angenehmer ;-)) Nebeneffekt des internen Programmablaufs im Gecko-Browser. Offensichtlich wird die Abarbeitung einer JavaScript .focus()-Methode im Eventhandler onblur nicht _richtig_ unterstützt. Mit folgendem lässt sich das nachweisen:

<form name="Test" action="#">
1. Name: <input type="text" name="t1" onblur="this.form.t3.focus();"><br>
2. Name: <input type="text" name="t2" onblur="this.form.t3.focus();"><br>
Nur hier hin mit dem Focus:<br>
3. Name: <input type="text" name="t3" onblur="this.form.t3.focus();"><br>
</form>

Durch mehrfaches Klicken(Tastaturnavigation erzeugt den Fehler nicht) in die verschiedenen Textfelder, kann man runtime Exceptions erzeugen:
Fehler: [Exception... "'Die Erlaubnis für das Lesen der Eigenschaft XULElement.selectedIndex wurde verweigert' when calling method: [nsIAutoCompletePopup::selectedIndex]"  nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"  location: "JS frame :: <unknown filename> :: onblur :: line 0"  data: no]

Offensichtlich beißen sich hier onblur="element.focus()" und das Öffnen der Auswahlliste bereits getätigter Eintragungen im mit der _Maus_ angeklickten (focusierten) Formularfeld.

viele Grüße

Axel