Das mit dem
map.onmouseover = areaMouseover;
function areaMouseover () {
if (!this.hash) return;
Das ist Unsinn. this verweist hier immer auf das map-Element, nicht das area-Element.
Es wäre zwar sehr elegant, alle Ereignisse der areas zentral beim map-Element »abhören« zu können, aber die besagte Methode mit den aufsteigenden focus-Events funktioniert nicht so ohne weiteres browserübergreifend. Das hatte ich hier mal geschildert:
</archiv/2008/10/t178060/#m1173789>
Für vier Browser bräuchte man drei unterschiedliche Umsetzungen. Das lohnt sich hier nicht. Deshalb habe ich es dann Old-School gelöst und einfach allen area-Elementen im map-Element über eine Schleife die Handler zugewiesen.
Das hier sollte auch mit Tastatur-Bedienung funktionieren:
http://molily.de/temp/map-infos.html
Zusätzlich zu den Mouseovern wird auch der Focus-Event überwacht. Den Rest habe ich schon beschrieben. Hinzugekommen ist nur ein Abfrage beim Verstecken des letzten aktiven Elemente sowie die Ausblend-Logik beim Verlassen der Map.
Die Funktionen habe ich zudem in einem Object-Literal gruppiert.
Wenn du Fragen zum Beispiel hast, schieß los!
Mathias