Michael K.: Document.write bei Image Map Mouseover

Hallo!

Folgende source verwende ich im moment:

------------------
...
<AREA SHAPE = "POLY" COORDS = "100, 200, 40, 30" HREF = "http://www.google.de" ALT = "google" onMouseOver = "javascript:show('Google Suchmaschine')" onMouseOut = "javascript:show(' ');">
<AREA SHAPE = "DEFAULT" NOHREF>
</MAP>

<div id="Layer1" style="position:absolute; left:650px; top: 250px; width:110px; height:49px; z-index:1">
<script language="JavaScript">
<!--
function show(text) {
document.write ( text );
}
-->
</script>
</div>
--------------------

das ganze soll den sinn haben das bei den koordinaten die im layer angegeben wurden, beim mouseover über bestimmte bereiche, die beschreibund des links ausgegeben wird. in diesem fall sollte bei den koordinaten 650:250 der text "Google Suchmaschine" ausgegeben werden. wenn ich nun aber mit der maus über den bereich fahre, erscheint der text in einem völlig neuen dokument. es öffnet sich sozusagen eine neue seite, in deren quellcode nur "Google Suchmaschine" steht.

schonmal vielen dank für eure hilfe ;-)
Gruß
Michael

  1. <!--
    function show(text) {
    document.write ( text );
    }

    und damit erstellst du, wie du schon richtig festgestellt hast ein neues Dokument und überschreibst das alte.

    Du musst ein vorhandenes Element neu beschreiben, dazu gibt es mehrere Möglichkeiten. entweder

    a.) du nimmst ein Formularelement (einen Button oder inputfeld
    * Vorteil läuft in allen Browsern
     *Nachteil sieht scheisse aus und evtl kann man den Text nicht lesen, da nicht alle Browser das Element dem Text anpassen.

    b.) Du beschreibst ein neues Fenster oder ein Ausgabeframe
    * Vorteil läuft in allen Browsern
    * Nachteil unflexibel beim Design

    c.) du überschreibst den Inhalt eines Layers
    * Vorteil du kannst es frei Layouten
    * Nachteil läuft nur in Browser ab der 4. Generation, allerdings nicht in Opera und du musst drei verschiedene Methoden berücksichtigen.

    Ein bisschen stöbern in selfHTML sollte dir weiterführende Informationen geben.

    Struppi.

    1. Hallo,

      methode C erscheint mir am logischsten, habe ja sowiso einen layer. gehe ich recht in der anahme das es so funktionieren sollte:

      layer1.write( text );

      greez
      Michael

      1. Hallo,

        methode C erscheint mir am logischsten, habe ja sowiso einen layer. gehe ich recht in der anahme das es so funktionieren sollte:

        layer1.write( text );

        Wie ich schon schrieb es gibt 3 Methoden je nach Browser, so aber nicht.
        Evtl. klappt das:

        function writeText(id, text)
        {
            var doc = document;
            var obj = null;

        if(document.getElementById) obj = doc.getElementById(id);
            else if(document.layers) obj = doc.layers[id];
            else if(document.all) obj = doc.all[id];
            else return;

        if(typeof obj.innerText != 'undefined') obj.innerText = text;
            else if(document.layers) {with(obj.document) {open();write(text);close()}}
        }

        Struppi.