Der Martin: Aktiven Link nach Reload hervorheben

Beitrag lesen

Hallo Nick,

bitte entschuldigt die etwas ungenaue Bezeichnung des Themas.

Nein, schon okay; aus dem Titel konnte ich schon ahnen, was dein Problem ist.

Leider wird der aktive Link (a:active) nach dem Laden der jeweiligen Seite (bei Klick auf Link 2 wäre das dann index.php?inhalt=link2) nicht hervorgehoben, sondern als normaler Link (a:link) angezeigt.

Genau hier liegt der Hase im Pfeffer: Du hast ein Verständnisproblem mit der Pseudoklasse :active. Du glaubst, :active gelte die ganze Zeit, während der die durch den Link geladene Seite angezeigt wird.

Das ist aber ein Irrtum.

In Wirklichkeit gilt :active nur vom Niederdrücken der Maustaste auf dem Link bis zum Loslassen der Taste. Oder, wenn du deinen Browser lieber mit der Tastatur bedienst, vom Drücken der Taste bis zur Verarbeitung des Tastendrucks durch den Browser.

Der Grund hierfür ist sicher der, dass die index.php neu geladen wird.

Nein, das hat damit nichts zu tun. Dadurch wird nur ein Fehler des IE vertuscht, durch den :active in diesem (und nur in diesem) Browser genau so funktioniert, wie du es erwartest: Für den IE gilt :active vom Anklicken des Links bis zum Laden einer neuen Seite oder bis zum Klicken an eine andere Stelle des Dokuments, je nachdem was früher eintritt. Das ist aber das Verhalten, das eigentlich für :focus gelten sollte.

Gibt es eine Möglichkeit, dass a:active dennoch angezeigt wird?

Du meinst, eine Möglichkeit, den Link kenntlich zu machen, der zur gerade angezeigten Seite geführt hat?
Nein, keine einfache. Aber da du schon PHP verwendest, könntest du mit einer serverseitigen Lösung nachhelfen: Dem Link, dessen href-Attribut der gerade erzeugten Seite entspricht, ein zusätzliches Merkmal verpassen, das du mit CSS auswerten kannst (also eine Klasse oder eine ID).

So long,

Martin