Hallo Jürgen,
willst Du da nochmal verbessernd ran? Oder sollte man sich nicht etwas grundsätzlich besseres überlegen?
Derzeit funktioniert die ESC-Taste nicht, weil Du toggleDialog ohne Parameter aufrufst. Daraufhin geht die Zuweisung von eventTarget an lastFocus kaputt.
Die ESC Steuerung ist darüber hinaus ein Memory Leak, weil sie jedesmal einen neuen keydown-Handler installiert. Das ist ein Funktionsliteral, deswegen entsteht jedesmal ein neues Funktionsobjekt und eine neue Registrierung. Der ESC-Handler muss eine function außerhalb von toggleDialog sein, sonst bleibt er nicht konstant.
Die lastFocus-Steuerung ist ebenfalls dysfunktional. Wenn toggleDialog zum Schließen gerufen wird, dann wird lastFocus als erstes mal überschrieben. Und selbst wenn nicht - der lastFocus Wert, der beim Öffnen gespeichert wurde, ist beim Schließen eh nicht mehr verfügbar, weil keine Closure da ist, die ihn festhält.
Das geht so alles nicht. Ich bastele mal eine Alternative...
Rolf
sumpsi - posui - obstruxi