Tim Tepaße: Fokus über einen Reload des Dokumentes hin erhalten

Beitrag lesen

Hallo Stephan,

Ich möchte aber, dass der zuvor ausgewählte Button (in diesem Fall ein div),
den "grünen" Status behält.

Mir ist zwar Sinn und Zweck dieses Features immer noch unverständlich,
gerade bei der Kompliziertheit einer Lösung für dieses künstliche Problem,
aber wenn Du unbedingt willst...

Überlegen wir mal.

Der Browser merkt sich nicht (weil es ja auch nicht erforderlich ist),
welches Element den Fokus hat, wenn der das Dokument nochmal lädt. Das
heißt Du mußt den Umweg über Javascript gehen. Zu den Nachteilen von
Javascript sage ich jetzt mal nichts, es ist hier ja nichts, daß bei
Nichtvorhandensein die Benutzung der Seite beeinflußt. Du mußt also ein
Javascript haben, daß weiß welches Element gerade selektiert ist. Da es
anscheinend keinen schnellen Verweis auf sowas wie document.focus gibt, muß
man das überwachen. Zwei mögliche Wege:

  1. Den Eventhandler onFocus in jeden zu überwachenden Link einfügen
       der dann an ein Javascript eine linkspezifische und dokumentweit
       einzigartige ID weitermeldet.
       (http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#onfocus)
  2. Events überwachen. Das geht irgendwie mit window.captureEvents(Event.FOCUS);
       (http://selfhtml.teamone.de/javascript/objekte/window.htm#capture_events)
       in SELFHTML steht aber, daß das nur in Netscape 4.0 funktioniert.
       Also indiskutabel.

Jetzt hast Du die ID des Elementes mit dem Fokus. Das muß Du jetzt irgendwie
an an das neugeladene Dokument kriegen. Wieder zwei Wege:

  1. Über Javascript. Es gibt extrem umständliche Wege, Werte, wie eben
       Deine ID an das nächste geladene Dokument weiterzugeben. Diese Links
       sollten Dir weiterhelfen:
       http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/index.htm
       http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe-2/index.htm
       Du mußt also im neugeladenen Dokument auch ein Javascript haben, daß
       die ID durch die Wertübergabe wieder ausliest, das Element über diese ID
       anspricht und ihm entweder über CSS Zuweisungen die entsprechenden
       Eigenschaften zuweist, oder aber ihm mittels focus() den Fokus zuweist.
       (http://selfhtml.teamone.de/javascript/objekte/htmlelemente.htm#a)

  2. Serverseitig. Dazu muß Du auf dem Server ein Skript haben, daß die
       Seite ausgibt und auch wieder irgendwie die ID bekommt (Als Parameter an
       die URL anhängen bietet sich an) und daß dann das zur ID passenden
       Element im Dokument hervorhebt. Entweder daß es dem Element eine
       CSS-Klasse definiert, welche dieselben Eigenschaften wie :active hat,
       oder, daß diese ID in ein Javascript im Dokument reingeschrieben wird,
       das dann beim Laden des Dokuments über einen Eventhandler aufgerufen
       wird, der dann dieses Javascript aufruft, das mittels focus() dem
       entsprechenden Element den Fokus verleiht.

Es ist also schrecklich umständlich und verläßt sich zudem auf Javascript.
Für mich wäre die Kosten-Nutz-Rechnung nicht hoch genug, um das zu
implementieren. Aber vielleicht hast Du den Idealismus? ;o)

Ich hoffe, der verregnete Döner hat gemundet. :-)

Lecker. So lecker, daß ich für mich künstlich herbeigezauberte Probleme
löse. ;o)

  • Tim
--
<img src="http://validator.w3.org/images/v15445" border="0" alt="">