Jörn: Problem mit iframe

Hallo Leute!

Habe folgendes Problem:

Ich habe mir auf meiner Seite eine Checkbox-Navigation erstellt (man kann das mit dem Explorer vergleichen, wo man die Menuestrukturen aufmachen kann). Statt Dokumente zu öffnen, kann man dann bei mir die verschiedenen Checkboxen anklicken.

Beim verändern des Inhalts meiner Anwendung wird dann immer abgefragt, welche Checkboxen aktiviert sind. Dies überprüft bei mir eine Funktion.

Läuft auch alles!

Nun ist die Menuestruktur etwas groß geworden und ich wollte das ganze in einen iframe packen. Hier bekomme ich nun folgende Fehlermeldung:

document.mapserv.layer ist Null oder kein Objekt.

mapserv ist hierbei ein <form>, in dem die Checkbox-Struktur eingebaut ist, layer bezeichnet die einzelnen Checkboxen.

Dies befindet sich alles in einer html Datei.

Die Funktion, die prüft, ob irgendwelche Checkboxen aktiviert sind, ist in eine JavaScript-Datei ausgegliedert.

Nun die Frage: Was macht der <iframe>, wodurch die Objekte(Checkboxen) nicht mehr gefunden werden? Oder muss ich den iframe mit einem Namen oder einer ID versehen, um über document.mapserv.xxx.layer darauf zugreifen zu dürfen?

Vielleicht kann mir ja jemand helfen. Dank im voraus.

Gruß Jörn

  1. Moin,

    document.mapserv.layer ist Null oder kein Objekt.

    Nur dass ich das richtig verstehe:
    mapserv liegt in einer Iframe-Datei und du willst diesen Befehl vom Hauptdokument (in dem der Iframe liegt) ausführen?

    Dann versuch mal:
    IframeName.document.mapserv.layer

    oder

    frames[0].document.mapserv.layer (vorrausgesetzt Dein IFrame ist der erste Frame auf der seite).

    Gruesse,
    Joerg

    1. Hallo Jörg!

      Erst mal Danke für Deine Antwort.

      Also mapserv ist der Name des <form>, welches ganz normal in meiner html Hauptdatei liegt.

      In diesem <form> habe ich jetzt den <iframe> um die Checkbox-Struktur gelegt, damit diese in diesem angezeigt wird.

      Ein Funktionsaufruf in der html-Datei ruft eine Funktion in einer JavaScvript-Datei auf, die überprüft, ob irgendwelche Checkboxen angeklickt sind. In dieser Funktion steht dann auch
      document.mapserv.layer. Das klappt ja auch. Nur nicht mehr, wenn ich um die Checkbox-Struktur einen <iframe> lege.

      Gruß Jörn

      1. Hallo,

        In diesem <form> habe ich jetzt den <iframe> um die Checkbox-Struktur gelegt, damit diese in diesem angezeigt wird.

        In diesem Moment liegen Deine Checkboxen nicht mehr in dem Form!
        Wenn du diese in eine Seperate HTML-Datei ausgliederst, haben sie erstmal mit der Hauptdatei nichts mehr zu tun - das ist eine komplett eigene HTML-Seite. Sie werden zwar in der Hauptseite angezeigt, de facto betrachtet der Browser diese Checkboxen aber quasi als eigenes Fenster, das eben nur zufällig innerhalb Deiner Hauptdatei angezeigt wird.

        Mit JavaScript kannst Du auf die Elemente trotzdem zugreifen, z.b.:
        window.IframeName.document.getElementById("checkboxId");

        oder, nehemn wir an, du baust um die Checkboxen im Iframe nochmal ein form (nennen wir es "IframeinnerForm", dann muesste auch sowas gehen:

        window.IframeName.document.IframeinnerForm.checkboxXY

        Aber wie gesagt, das geht nur mittels JavaScript und auch nur, wenn die Dateien auf dem gleichen server liegen (Same origin policy).

        Klickst Du z.b. im Formular der Hauptseite auf "Submit", werden auch die Werte der Checkboxen in deinem Iframe nicht übernommen, weil eben dein Formular nicht weiss, was sich innerhalb des Iframes befindet.

        Gruss,
        Joerg