Matthias: neue fenster aus einer map-anweisung öffnen

hallo!
ich habe folgendes problem:
ich habe eine grafik mit einer anzahl von bereichen, die jeweils mit einem neuen fenster verlinkt sein sollen.
folgender programmcode wird zwar vom ie4 verstanden, aber nicht vom nc4.5. woran liegt's? darf ich dort keinen onclick-befehl in ein map-anweisung einbinden?
.....
<MAP NAME="z">
<AREA SHAPE="rect" coords="383,190,440,213" onclick=open("x.htm","_blank","height=230,width=500,locationbar=no,toolbar=no")>
......
</MAP>
......
zweitens würde ich gerne eine funktion am anfang definieren, damit ich beim oben erwähnten programmteil, der den map-bereich definiert und das neue fenster öffnet nur noch die htm-adresse als wert der funktion eingeben muß. leider sind alle meine versuche gescheitert. wer kann mir da weiter helfen?

drittens würde ich gerne wissen, ob ich mit einem befehl alle von diesem frame aus generierten fenster schließen kann, wenn der ausgangsframe selbst geschlossen, oder ein neuer inhalt geladen wird.

vielen dank im voraus, matthias

wer sich den aktuellen stand ansehen möchte url ist unten, dann im bereich 'ich' menü: freunde / wer mit wem

  1. Hallo Matthias,

    doch, das geht im Netscape schon, was Du vorhast. Ohne es getestet zu haben fällt mir an Deinem Code folgendes auf:

    1. Der Event-Handler heißt onClick, nicht onclick (JS ist eigentlich case-sensitiv, NS macht da ab und an Mucken wenn man sich nicht dran hält)

    2. Die JS-Anweisung wäre genauer window.open, nicht nur open.

    3. Üblicherweise ordnet man dem zu öffnenden Fenster eine Variable zu, etwa newwindow = window.open(...)

    4. Ein Funktionsaufruf aus einer Imagemap ist durchaus möglich, z.B.
    <area shape="..." coords="..." onClick="fensterauf(..parameter...)"
    Als Parameter kannst Du beispielsweise die dem Fenster zugewiesene Variable und die URL mitgeben.

    Grüße,

    Utz

    1. hi!
      vielen dank für die prompte antwort. die von euch angemerkten berichtigungen zu onClick und window.open hatte ich schon vorher ausprobiert. leider ohne erfolg. der
      netscape öffnet die fenster nicht.
      was das problem des funktionsaufrufes anbelangt: ich hatte als alternative für die ausführliche version in meiner ersten frage folgenden programmcode geschrieben:
      .....
      <script language="JavaScript">
      function quer(url)
      {
      fenster = window.open(url,"eins","height=230,width=500,locationbar=no,toolbar=no");
      }
      function hoch(url)
      {
      fenster = window.open(url,"zwei","height=300,width=400,locationbar=no,toolbar=no")
      }
      </script>
      </HEAD>
      <BODY>
      <CENTER>
      <BR><BR>
      <MAP NAME="freunde">
      <AREA SHAPE="rect" coords="300,292,370,313" href="JavaScript:quer("andre.htm")"> diese version meldet eine fehler bezüglich des punktes in der url

      <AREA SHAPE="rect" coords="300,105,368,125" onClick="quer("frank.htm")"> diese funktioniert ebenfalls nicht
      <AREA SHAPE="rect" coords="180,193,270,215" onClick="hoch("stephan.htm")">
      <AREA SHAPE="rect" coords="383,190,440,213" onClick="quer("gerd.htm")">
      ........
      auch hier gehen die fenster (in beiden browsern) nicht auf. wo liegt der fehler liegt?
      nochmals recht herzlichen dank.ach übrigens..... ist erst mein zweiter tag mit javascript ;-)

      1. Hallo muc,

        netscape öffnet die fenster nicht.

        Netscape benötigt unbedingt ein href im Tag, also einfügen href="#"

        ich verbessere aber gleich noch ein paar mehr Fehler:

        <script language="JavaScript">
        function quer(url)
        {
        fenster = window.open(url,"eins","height=230,width=500,locationbar=no,toolbar=no");
        }
        function hoch(url)
        {
        fenster = window.open(url,"zwei","height=300,width=400,locationbar=no,toolbar=no")
        }
        </script>
        </HEAD>

        Die Funktionen sind in Ordnung, ich empfehle dir trotzdem mal
        <../../sfausles/tsfa_tcd.htm#a5>
        genauer anzuschauen.

        <BODY>
        <CENTER>
        <MAP NAME="freunde">
        <AREA SHAPE="rect" coords="300,292,370,313" href="JavaScript:quer("andre.htm")">

        du mußt "andre.htm" maskieren mit "andre.htm",

        <AREA SHAPE="rect" coords="300,105,368,125" onClick="quer("frank.htm")">

        gleicher Fehler und href fehlt. Besser:

        <AREA SHAPE="rect" coords="300,105,368,125" href="#" onClick="quer("frank.htm");return false;">

        oder so:
        <AREA SHAPE="rect" coords="300,105,368,125" href="#" onClick="quer('frank.htm');return false;">

        einfaches ' statt " verwenden

        return false sorgt dafür, daß der href nicht ausgeführt wird.
        das Gleiche gilt für alle anderen Aufrufe

        nochmals recht herzlichen dank.ach übrigens..... ist erst mein zweiter tag mit javascript ;-)

        :-) es wird schon werden mit dem JS

        Viele Grüße

        Antje

  2. Hi,

    <MAP NAME="z">
    <AREA SHAPE="rect" coords="383,190,440,213" onclick=open("x.htm","_blank","height=230,width=500,locationbar=no,toolbar=no")>
    ......
    </MAP>

    RTFM, wenn ichs mal so sagen darf ,)

    <area shape="rect" coords="383,190,440,213" onclicl="window.open('x.htm','irgendeinname_KEIN_blank_oder_so_was','.....');">

    zweitens würde ich gerne eine funktion am anfang definieren,
    damit ich beim oben erwähnten programmteil, der den map-bereich
    definiert und das neue fenster öffnet nur noch die htm-adresse
    als wert der funktion eingeben muß.

    hm, seltsam ausgedrückt... aber ich glaube, ich weiß, was du meinst:

    function oeffne(url)
    {
    fenster = window.open(url,"","angaben");
    }

    <area shape="rect" coords="383,190,440,213" href="JavaScript:oeffne(url.htm)">

    drittens würde ich gerne wissen, ob ich mit einem befehl alle von
    diesem frame aus generierten fenster schließen kann, wenn der
    ausgangsframe selbst geschlossen, oder ein neuer inhalt geladen
    wird.

    Es gibt keinen Befehl dafür. Trotzdem kann man das machen ,) dazu
    aendere die Funktion "oeffne" so ab:

    <script language="JavaScript">
    var fenster = new Array();

    function oeffne(url)
    {
    var ende = fenster.length+1;

    fenster[ende] = window.open(url,"","angaben");
    }

    function alle_schliessen()
    {
    var laenge = fenster.length;

    for(i=0;i<=laenge;i++)
      {
      fenster[i].close();
      }
    }
    </script>

    <body onunload="alle_schliessen();">
    <map name="z">
    <area shape="rect" coords="383,190,440,213" href="JavaScript:oeffne(url.htm)">
    </map>
    </body>

    mfg
    CK1

    P.S.: Programmieren heißt nicht, Befehle zu benutzen - Programmieren
    heißt, mit gegebenen Möglichkeiten Wege zu finden, ein Problem zu
    lösen.

  3. so, herzlichen dank nochmals für die hilfe.
    mit vereinten kräften habe ich's doch geschafft. nachfolgend, für den interessierten der functionierende code:

    <script>
    function quer(url)
    {
    fenster = window.open(url,"_blank","height=230,width=500,locationbar=no,toolbar=no");
    }
    function hoch(url)
    {
    fenster = window.open(url,"_blank","height=300,width=400,locationbar=no,toolbar=no");
    }
    </script>
    </HEAD>
    <BODY>
    <CENTER>
    <BR><BR>
    <MAP NAME="freunde">
    <AREA SHAPE="rect" coords="180,193,270,215" href="#" onClick=hoch("stephan.htm")>
    <AREA SHAPE="rect" coords="383,190,440,213" href="#" onClick=quer("gerd.htm")>
    .......
    </MAP>
    <IMG SRC="freundeskreis.png" USEMAP="#freunde" BORDER="0">
    </CENTER>

    netscape benötigt href="#" zum öffnen der fenster. mit "_blank" in der funktion, wird für jeden map-link ein eigenes fenster geöffnet, wenn man die fenster benennt, nur jeweils eines für die funktion quer, oder hoch und die damit verknüpfte seite eingelesen.
    gruß, matthias