peter: dynamisch Imagemap erzeugen

Hi,

ich werd hier wahnsinnig.
Hab schon alles mögliche versucht, aber mein IE weigert sich beharrlich  einen "area"-Bereich in der Imagemap aktiv zu machen.

Folgender Code:

ich erzeuge eine Imagemap und geb ihr einen Namen:

  
meineMap=document.createElement("map");  
meineMap.name='MAP_1';  

ich erzeuge ein Area, weise diesem die gewünschten Eigenschaften zu und füge es in die Map ein:

  
areaTag=document.createElement("area");  
  
areaTag.shape='RECT';  
areaTag.coords='10,10,100,100';  
areaTag.href='seite.html';  
  
meineMap.appendChild(areaTag);  

Die Abfragen:

  
alert(meineMap.areas.length);  
  
alert(meineMap.areas[0].shape);  
alert(meineMap.areas[0].coords);  
alert(meineMap.areas[0].href);  

geben mir für areas.length die erwartete Anzahl von 1 und auch die korrekten Werte der Eigenschaften aus.

hänge dann die Map in den Body ein, erzeuge ein Image, weise dem Image die Map zu und hänge das Bild in den Body ein

  
document.body.appendChild(meineMap);  
  
var bild=document.createElement('img');  
bild.src='grafik/bildname.png';  
  
bild.useMap='#MAP_1';  
  
document.body.appendChild(bild);  

Funktioniert auch alles wunderbaar im Firefox, DOM-Inspector zeigt mir auch das erwartete Ergebnis, Javascript-Konsole bleibt leer.

Nur im IE wird der Area-Bereich nicht aktiv. Daß die Map aber da ist, kann ich an der blauen Link-Umrandung des Bildes erkennen.

Wenn ich im Body per HTML eine Map(name="MAP_2") reinsetze und im JS dem Bild mit bild.useMap='#MAP_2'; zuweise, funktionierts einwandfrei.

Im Archiv hab ich zu dem Thema folgenden Artikel gefunden:
http://forum.de.selfhtml.org/archiv/2005/6/t108695/
Hat mich dabei aber auch nicht weitergebracht.

Mit setAttribute() war übrigens auch alles wie oben beschrieben.

Zuweisung ungültiger Werte an coords:

  
areaTag.coords='10px,10px,100px,100px';  

brachte bei der alert-Abfrage 0,0,0,0 zurück.

Hilfe, was mach ich falsch?
Wär total glücklich, wenn mir jemand weiterhelfen könnte.

viele Grüße
peter

  1. Hallo,

    ich erzeuge eine Imagemap und geb ihr einen Namen:

    meineMap=document.createElement("map");
    meineMap.name='MAP_1';

      
    gib ihr auch noch eine ID  
      
    ~~~javascript
      
    meineMap.id='MAP_1';  
    
    

    Dann funktioniert das.

    Eine Erklärung könnte sein, dass ja ein Name nicht eindeutig sein muss. Es könnte also mehrere MAPs mit dem Namen "MAP_1" im Dokument geben. Außerdem überlappen sich im IE-JScript die Namensbereiche von ID und Name öfters mal. Es ist also immer eine gute Idee, etwas, was mit einem name nicht funktioniert einfach mal mit einer id zu probieren.

    viele Grüße

    Axel

    1. Hi Axel,

      gib ihr auch noch eine ID

      Super, genau so funktionierts.
      Da hätt ich evtl. noch Jahre drüber brüten können und wär vielleicht immer noch nicht draufgekommen.

      Vielen vielen Dank, Gruß und schönen Donnerstag noch.

      peter