Cheatah: Frameübergreifende Layer

Hallo,

ich arbeite gerade an einem horizontalen Navigationsmenü ähnlich bekannter Windows-Funktionen, in dem durch einen Klick auf einen der Punkte ein DropDown-Untermenü geöffnet wird. Da der Navigationsframe nur minimale Größe haben soll, gelangt das Untermenü also zwangsläufig in den optischen Bereich des Hauptframes.

Um nicht auf (in Größe, Form und Aussehen schwer steuerbare) Formulare zurückgreifen zu müssen, versuche ich, das Problem mittels Layer zu lösen. Das zugehörige Script basiert vom Prinzip her auf einem Anwendungsbeispiel aus SelfHTML und funktioniert soweit auch gut. Nur werden die Layer leider nur innerhalb des Menüframes dargestellt. Ich habe schon versucht, die Scripte in die Frameset-Datei zu schieben, aber dort lassen sich natürlich keine Layer definieren. Was soll ich also tun? Gibt es überhaupt eine Lösung mit Layern? Wenn nein, wie komme ich ans Ziel?

Cheatah

  1. Hallo Cheatah,

    Gibt es überhaupt eine Lösung mit Layern? Wenn nein, wie komme ich ans Ziel?

    Layer koennen nicht ausserhalb eines Fensters, auch nicht eines Framefensters plaziert werden.
    Wenn Du schon mit Layern arbeitest, kannst Du ja auch ganz ohne Frames arbeiten und Ziele der Menuaauswahl in einen grossen Layer des normalen Fensters laden. So hast Du alles in einem Fenster, und die Menues koennen sich zumindest ueber dieses Fenster erstrecken.

    viele Gruesse
      Stefan Muenz

    1. Hallo Stefan,

      Wenn Du schon mit Layern arbeitest, kannst Du ja auch ganz ohne Frames arbeiten und Ziele der Menuaauswahl in einen grossen Layer des normalen Fensters laden. So hast Du alles in einem Fenster, und die Menues koennen sich zumindest ueber dieses Fenster erstrecken.

      das ist eine großartige Idee, danke sehr! Aber gibt es möglicherweise Probleme mit Frames innerhalb eines Layers? Meine Homepage ist ziemlich umfassend, und das Layer-Menu ist nur für die Hauptthemen gedacht.

      Cheatah

      1. Hallo Cheatah,

        gibt es möglicherweise Probleme mit Frames innerhalb eines Layers?

        Keine Ahnung, hab ich noch nicht probiert, was z.B. passiert, wenn man in einen Layer eine Datei laedt, die ein Frameset aufbaut.

        viele Gruesse
          Stefan Muenz

        1. Hi Stefan,

          gibt es möglicherweise Probleme mit Frames innerhalb eines Layers?
          Keine Ahnung, hab ich noch nicht probiert, was z.B. passiert, wenn man in einen Layer eine Datei laedt, die ein Frameset aufbaut.

          ich schon - es wird der noFrames-Bereich angezeigt... da muß ich wohl noch mehr Layer definieren!

          Cheatah

        2. gibt es möglicherweise Probleme mit Frames innerhalb eines Layers?
          Keine Ahnung, hab ich noch nicht probiert, was z.B. passiert, wenn man in einen Layer eine Datei laedt, die ein Frameset aufbaut.

          Ich auch nicht, bin ehrlich gesagt, nicht auf die Idee gekommen.
          Aber eigentlich muesste es doch zumindest bei Netscape die ganze Objekthirarchie durcheinanderwefen.
          Netscape:
          Layer-Objekt kennt keine Eigenschaft window. Egal, was man in einem Layer hat, sofort definierten Inhalt, dynamisch reingeschriebenen oder aus einer Datei geholt, dann ergibt das kein eigens window (Frames sind auch windows), sondern der Inhalt versteckt sich hinter mein_Window.document.layers['mein_Layer'].document.
          Fuer MS gilt das analog, nimmt man die Entsprechung fuer das Netscape-Layerobjekt.
          Objekte sehen zwar etwas anders aus, aber trotzdem auch hier: keines der moeglichen Objekte kann eine Eigenschaft window haben.
          Anders waere es evtl. bei IFRAME:
             "if a document defines one or more frames (that is, contains one or more
              FRAME or IFRAME tags), the browser creates one window object for the
              original document and one additional window object for each frame"
          Da muesste man es direkt mal probieren, rein theoretisch sollte es gehen, wenn ich den zitierten Absatz richtig lese.

          Ach, noch eine Bemerkung fuer diejenigen, die beim Lesen hier denken, ich beziehe das ausschliesslich auf JavaScript:
          Nein, tue ich nicht, aber
          1. muss so eine Struktur auch in JS-Objekten abbildbar sein - wie sollte man sonst zugreifen?
          2. denke ich, dass auch Funktionalitaeteten intern im Browser genau auf diesem Objektmodell beruhen, auf das man von aussen (mit Script-Sprachen) ueber definierte Objekte Zugriff hat.
          Also halte ich Ueberlegungen ueber "Was koennte der Borwser tun, wenn..." auf dieser Grundlage fuer durchaus sinnvoll.

          Christine

          1. Hi Christine,

            Deine Erläuterungen klingen nicht nur verdammt logisch, sondern decken sich auch mit den Testergebnissen :-) Danke für die Hintergrundinfos, so hatte ich das gar nicht betrachtet!

            Cheatah

    2. Hi Stefan,

      ich habe es jetzt mit einem zusätzlichen Layer realisiert. Das Problem ist nur, daß ich in diesen Layer eine HTML-Datei lade (mittels src=file.htm) - mit dem Erfolg, daß die Menu-Layer wieder nach unten rutschen :-( Wenn ich keine Datei in den Layer lade, funktioniert es einwandfrei.

      Ich habe es schon mit zIndex und moveBelow/moveAbove  versucht, leider ohne Erfolg. Was soll ich tun?

      Cheatah (fast schon verzweifelt)

  2. Wie kommst du auf die Idee, dass Elemente eines Dokuments (Menuframe) im andern Dokument(mainframe) dargestellt werden koennen. Ich wuerde auch wie Stefan vorschlagen es ganz zu lassen mit den frames und ganz auf Layer zu setzten, dann geht es auch, wenn die datenmange nicht zu gross wird, bekommst du so deine HP in ein einziges HTML Dokument.

    Wieso sind uebrigens Formulare schwer steuerbar?

    1. Hi,

      Wie kommst du auf die Idee, dass Elemente eines Dokuments (Menuframe) im andern Dokument(mainframe) dargestellt werden koennen. Ich wuerde auch wie Stefan vorschlagen es ganz zu lassen mit den frames und ganz auf Layer zu setzten, dann geht es auch, wenn die datenmange nicht zu gross wird, bekommst du so deine HP in ein einziges HTML Dokument.

      naja, ich werde doch lieber einzelne Dateien in die Layer nachladen :-)

      Wieso sind uebrigens Formulare schwer steuerbar?

      In Größe, Form und Assehen schwer steuerbar! Ich habe meine eigenen Vorstellungen, wie das Menu aussehen soll, und leider läßt sich das mit Formularbefehlen nicht realisieren. Wenn es nur um das onChange ginge, wäre das Problem gering.

      Cheatah