Uwe Molzahn: Dynamische Links (Crossbrowser)

Hallo zusammen !

Die Ausgangslage:
In einem normalen Frame (F1) ist ein IFrame zentriert. Überlagert wird der IFrame von einem Layer. In F1 liegt eine Image Map.

Meine Frage:
Wie kann ich bei einem Klick auf ein Link im IFrame bzw. Layer eine HREF auf der Image Map in F1 mit Javascript dynamisch ändern ?

Für Hinweise, Tips und entsprechende Crossbrowser Scripts wäre ich echt dankbar.

Gruß
Uwe

  1. Hallo Uwe,

    Meine Frage:
    Wie kann ich bei einem Klick auf ein Link im IFrame bzw. Layer eine HREF auf der Image Map in F1 mit Javascript dynamisch ändern ?

    Ich hab mal in die Doku von MS geschaut. Über die href-Eigenschaft des AREA-Objektes kannst Du den Wert auslesen und verändern, steht da. Probiert hab ich es allerdings nicht. Ob dieses Feature allerdings auch von Netscape unterstützt wird, kann ich Dir aktuell leider nicht sagen (s.u.). Von Opera weiß ich nur, daß das ändern der HREF eines ordinären ANCHORS *nicht*  funktioniert, schätzte, daß dies dann auch das AERA-Objekt betrifft.
    Die MS-Doku  findest du auf http://msdn.microsoft.com im WebWorkshop. Dort nach DHTML und AREA suchen.
    Netscape müßte was unter [http://developer.netscape.com] anzubieten haben, jedenfalls gibt es dort Massen an Dokus zu JS und den Navigator.
    Mehr weiß ich leider auch nicht.

    Viel Spaß

    CirTap

  2. Ich nochmal..

    evtl. verhält es sich mit den links ähnlich wie mit den Koordinaten: siehe http://www.teamone.de/selfaktuell/self_forum/19333.html.

    Diese outer- und innerHTML-Dinger sind aber auch nur im IE verfügbar (DOM sein dank).

    CirTap

    1. Hallo "CirTap",

      vielen Dank für deine Hinweise. Du hast mich da auf 'n paar gute Ideen gebracht. Falls alles läuft, plaziere ich den Script Code in ein paar Tagen im Forum.

      Cheers
      Uwe

  3. Hallo nochmal,

    fuer den Explorer kann ich jetzt 'ne Loesung anbieten:

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    ie = (document.all)? true:false
    function changelink(){
    if (ie) parent.document.all.area1.setAttribute("href","LinkNeu.htm","false")
    }
    //-->
    </SCRIPT>

    Die entsprechende Area auf der Image Map traegt hier die ID="area1" . Wichtig ist das "parent " vorweg, sonst gibt es einen Laufzeitfehler. Das Link auf dem IFrame wird mit <a href="javascript:changelink()">Link</a> referenziert.

    Fuer Netscape scheint es mangels setAttribute Verfügbarkeit wohl nur die Lösung zu geben, weitere Layers im Hauptdokument zu generieren.

    Im Web hab' ich übrigens noch 'nen ganz interessanten Lösungsansatz gefunden:

    <!-- ONE STEP TO INSTALL DYNAMIC LINKS:

    1.  Copy the coding into the BODY of your HTML document  -->

    <!-- STEP ONE: Paste this code into the BODY of your HTML document  -->

    <center>
    <form name="addresses">
    do you want to ... <select name="list" onchange="update()">
    <option value="mailto:admin@some-site.com">email admin@some-site.com
    <option value="mailto:support@some-site.com">email support@some-site.com
    <option value="http://www.netscape.com">go to www.netscape.com
    </select>
    <a href="updatelink">do it!</a>
    </form>
    </center>

    <script language="javascript">

    <!-- this script and many more are available free online at -->
    <!-- the javascript source!! http://javascript.internet.com -->

    <!--  begin
    pos = 9999;
    for(num=0;num<document.links.length;num++) {
    if (document.links[num].href.indexof("updatelink") != -1) {
    pos = num;
    num = 5000;
       }
    }
    function update() {
    if (pos!=9999) {
    sel = document.addresses.list.selectedindex;
    document.links[pos].href = document.addresses.list[sel].value;
       }
    }
    update();
    // end -->
    </script>