buhbeamter: Einsprungseite in Frame

Hallo,

ich habe zu einem Tool eine Hilfefunktion in HTML geschrieben, die aus 2 Frames besteht, nämlich links und rechts. Der linke Frame beinhaltet die Navigationsleiste, der rechte den Inhalt. Das funktioniert soweit gut, solange ich den Einstieg immer über die Indexseite wähle und den Links folge.

Jetzt ist es aber so, dass ich aus dem Tool für das diese Hilfe geschrieben wurde einen direkten Einsprung auf das entsprechende HTML haben möchte.
Beispielsweise liegt ein HTML 2 Ebenen unter dem Wurzelverzeichnis. Wenn der User jetzt zu dieser Funktion F1 drückt, öffnet sich automatisch dieses HTML.
Auf die Einsprünge habe ich keine Einwirkung, da dieses von einer exterenen Firma programmiert wird.

Nun die Frage: kann ich den einzelnen HTML "sagen", dass deren Inhalt immer nur in dem rechten Frame angezeigt wird und dass der Inhalt des linken Frames nachgeladen werden muss?

Vielen Dank

  1. Lieber buhbeamter,

    Du willst also ein Frameset dynamisch nachladen?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Oh, das sieht gut aus vielen Dank!!
      Manchmal muss man auch nur wissen wonach man suchen muss.
      Ich weiss dass die Lösung mit den Frames nicht so glücklich ist, ich weiss aber keine andere Lösung um die Navileiste in allen HTML (einige hundert)
      einzubetten und an zentraler Stelle pflegen zu können.
      Gibt es eine einfacherer und bessere Lösung?

  2. Hallo buhbeamter,

    du hast sehr schön die Nachteile von Frames beschrieben. Aus diesem Grund werden Frames zur Trennung von Inhalt und Navigation auch nicht mehr eingesetzt. Ich selbst habe mich aus genau diesem Grund vor fast zehn Jahren von Frames verabschiedet.

    Für dich gibt es zwei Lösungen:

    Stelle deine Seiten auf "framelos" um. Wenn es wenige Seiten sind, die sich selten ändern, kopiere die Navigation einfach von Hand in die Seiten. Wenn dir das zu aufwändig ist oder wenn du regelmäßig die Struktur änderst oder erweiterst, solltest du in den FAQ nachsehen (http://forum.de.selfhtml.org/hilfe/faq.htm#quelltext-auslagern). Bei nur wenigen Einstiegsseiten könntest du auch für diese eine eigene Frameseite anlegen.

    Wenn das alles keine Option ist, musst du die Seiten mit Javascript "Nachverframen". Das habe ich auch mal gemacht, da das aber schon zehn Jahre her ist, kann ich dir nur noch den Tipp geben, nach "Frameset nachladen" oder so zu suchen. Meine alten Seiten finde ich nicht mehr. Wundere dich aber nicht, dass du nur uralte Sachen findest. Bedenke auch, dass bei dieser Lösung Javascript eingeschaltet sein muss.

    Gruß, Jürgen

    1. Vielen Dank für die ausführliche Antwort.
      Leider ändern sich die Inhalte und die Strukturen ständig und es sind einige hundert HTML Seiten, so dass der Tipp mit dem händischen einpflegen leider nicht in Frage kommt.

      Oder es gibt eine grundsätzlich andere Lösung dafür wie ich die Navileiste nur einmal hinterlegen muss, sie aber in allen HTML angezeigt bekomme.

      1. Mahlzeit buhbeamter,

        Oder es gibt eine grundsätzlich andere Lösung dafür wie ich die Navileiste nur einmal hinterlegen muss, sie aber in allen HTML angezeigt bekomme.

        Wie von JürgenB genannt (aber leider nicht verlinkt): http://forum.de.selfhtml.org/hilfe/faq.htm#quelltext-auslagern

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Mahlzeit,

          das mit dem include über PHP gefällt mir. Ich habe allerdings überhautp keine Ahnung davon. Ich habe es gerade also ausprobiert und die Navigation in ein externes .php File gepackt. Auf der Indexseite habe ich dann einen include Befehl reingesetzt. Leider funktioniert es nicht ganz.
          Er meckert mir die Syntax in der navi.php an.
          kann ich innerhalb dieser navi.php datei kein javascript unterbringen?
          Ich habe nämlich einen dynamischen Verzeichnisbaum als Navigationsleiste den ich mit einer Javascript Funktion beschrieben habe.
          Hier mal kurz der Anfang des Quelltextes der navi.php:

          <?php

          <div id="navi">
             <script type='text/javascript'>
           function anzeigen(das,was){
           if (document.getElementById(das).style.display == 'none') {
            document.getElementById(das).style.display = 'block';
            was.src="bilder/open.gif";
           }
           else {
            document.getElementById(das).style.display = 'none';
            was.src="bilder/closed.gif";
            }
          }
           </script>

          Die Fehlermeldung meckert mir schon des erste < Zeichen an in der 3. Zeile.

          1. Hallo!

            <?php

            Hier sagst Du, dass jetzt PHP kommt.

            <div id="navi">

            Das ist aber HTML (und alles folgende auch).

            Lass das "<?php" am Anfang einfach weg, dann sollte es gehen.

            Viele Grüße,
            Alexander

            1. Das erscheint mir logisch, hätte ich ja auch selber drauf kommen können.
              Sorry.

              Aber Dankeschön für die Hilfe!
              Es hat wunderbar funktionierrt.
              Jetzt muss ich das nur noch in eine eigene Spalte bekommen.
              Da probier ich mal etwas rum, wird schon klappen.

              1. Lieber buhbeamter,

                Jetzt muss ich das nur noch in eine eigene Spalte bekommen.
                Da probier ich mal etwas rum, wird schon klappen.

                Du willst also sämtliche HTML-Dokumente (Du sagtest etwas von über 100!) mit einem Include erweitern? Also in jede dieser über hundert Dateien die Zeichenfolge <?php include 'navi.html'; ?> schreiben?

                Da scheint es mir doch wesentlich sinnvoller, jeden Aufruf intern auf ein PHP-Script umzuleiten, welches dann anhand der angeforderten HTML-Datei diese Veränderung vornimmt. PHP als Voraussetzung hast Du ja. Kannst Du mod_rewrite für das Verzeichnis benutzen?

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
                1. Nein, leider nicht. Ich werde diese HTML mit Copy und Paste bedienen. Ist eine Stunde Arbeit aber dafür läuft es dann. Bin schon glücklich mit dieser Lösung :-)

                  Bei allen HTML die neu ersetllt werden ist es ja eh kein Problem.

                  1. So, jetzt habe ich das nächste Problem so ein Käse.
                    Um nun die mit PHP includierte Navigationsleiste im linken Bereich zu positionieren, habe ich im CSS einfach 2 Elemente gemacht. Sieht wie folgt aus:

                    #navi { float:left;}
                      #inhalte { margin-left:280px;}

                    die navileiste wird auch korrekt neben dem Inhalt angzeigt. Leider verschiebt sie sich bei Scrollen mit und ist somit nicht mehr erreichbar.
                    Durch die Suchfunktion habe ich noch etwas gefunden und versucht die Position der Navileiste wie folgt zu fixen:

                    #navi { float:left; position:fixed;}
                      #inhalte { margin-left:280px;}

                    Das bleibt jedoch völlig ohne Wirkung.
                    Ist das vielleicht ein Syntaxfehler?

                    Außerdem öffnen sich die Links die ich aus der Navileiste heraus aufrufe in einem eigenen Fenster. Ich hätte es aber gerne, dass der Inhalt im Hauptfenster aufbaut. Wie bekomme ich das hin? mit target=self oder ähnlich?

                    1. Mahlzeit buhbeamter,

                      Das bleibt jedoch völlig ohne Wirkung.

                      <http://de.selfhtml.org/css/eigenschaften/positionierung.htm#position@title=Welcher Browser?>

                      Ich hätte es aber gerne, dass der Inhalt im Hauptfenster aufbaut. Wie bekomme ich das hin? mit target=self oder ähnlich?

                      Ohne irgendein "target" ...

                      MfG,
                      EKKi

                      --
                      sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                      1. Ich habe IE und Firefox probiert, beide in der aktuellen Version.
                        Wenn ich "target" komplett entferen öffnen sich die links in einem neuen Browserfenster wie schon beschrieben.

                        1. Ich muss mich korrigieren. Habe target doch noch gefunden und entfernt und es funktioniert! Jetzt muss ich nur noch die Navileiste fixieren.

                          Oder löse ich das Problem besser als Tabelle?

                          1. Mahlzeit buhbeamter,

                            Oder löse ich das Problem besser als Tabelle?

                            Eine Navigation ist eine http://de.selfhtml.org/html/text/listen.htm@title=Liste von Links (bzw. weiteren Unter-Listen). Wieso meinst Du, dass dafür eine Tabelle geeignet sein?

                            Tabellen sind für die Darstellung tabellarischer Daten da ...

                            MfG,
                            EKKi

                            --
                            sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                            1. Hallo und Danke nochmal für die engagierten Antworten.

                              Den Code habe ich noch nicht validiert. Mache ich aber Morgen direkt mal.
                              Mit der Tabelle habe ich mir so gedacht, dass die linke Spalte die Navigation ist und die rechte Spalte der Inhalt.

                              Oder ist das so wie es jetzt ist schon ok, mit der Definition im CSS?

                              1. Also der Code wurde erfolgreich validiert, keine Fehler.
                                So ein Käse. Das kann doch nicht so schwer sein die Navileiste zu fixieren.

                                1. Mahlzeit buhbeamter,

                                  Also der Code wurde erfolgreich validiert, keine Fehler.
                                  So ein Käse. Das kann doch nicht so schwer sein die Navileiste zu fixieren.

                                  Eigentlich nicht. Aber ohne Code lässt sich's schwer raten ... hast Du mal ein Online-Beispiel?

                                  MfG,
                                  EKKi

                                  --
                                  sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                                  1. Die Seite steht nicht online und ich kann sie leider aufgrund der vertraulichen Inhalten nicht online stellen.

                                    hier ist der Code des CSS:

                                    body   { font-family:arial,sans-serif; background-color:#EBE9D8; margin-left:40px; margin-right:10px; margin-top:30px; margin-bottom:10px; }
                                      p, h1, h2, h3, h4, ul, ol, li, div, td, th, address, blockquote, nobr, b, i { font-family:arial,sans-serif; color:#070204; }
                                      h1     { font-size:18pt; color:#070204; }
                                      h2     { font-size:14pt; color:#070204; }
                                      h3    { font-size:12pt; color:#070204; }
                                      h4     { font-size:12pt; color:#070204; }
                                      p, ul, ol, li, div, td, th, address, nobr, b, i { font-size:12pt; color:#070204; }
                                      pre          { font-family:courier new,courier; font-size:12pt; color:#070204; }
                                      a:link       { color:#0000FF; text-decoration:underline; }
                                      a:visited    { color:#800080; text-decoration:underline; }
                                      a:hover { color:#FF0000; text-decoration:none;}
                                      a:active     { color:#FF0000; text-decoration:none; }
                                      a:link  img { text-decoration:none; }
                                       #navi { float:left; }
                                       #inhalte { margin-left:280px;}

                                    und hier der Code der indexdatei bis zum Anfang des Inhaltes:

                                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
                                    <html lang="de-DE">
                                    <head>
                                       <title>Hilfe zu Programm / Web 4.02</title>
                                        <link rel="stylesheet" type="text/css" href="formate.css">
                                    </head>

                                    <body>
                                    <div id="navi">

                                    <?php
                                    include "navi.php";
                                    ?>
                                    </div>

                                    <!-- INHALT ----------------------------------------------------------------------------------------------------------->
                                    <div id="inhalte">

                                    <a name="top"></a>
                                    <h1>Programmname</h1>

                                    <hr>

                                    hilft das weiter?

                                    1. Hallo buhbeamter,

                                      #navi { float:left; }
                                         #inhalte { margin-left:280px;}

                                      versuch mal

                                      #navi { position:fixed }
                                          #inhalte { padding-left:280px;}

                                      Bedenke aber, das die Navigation nie(!!!) nach unten aus dem Browserfenster herausragen darf. Denn dann wären die unteren Links unerreichbar.

                                      Bedenke auch, dass IE6 und älter position:fixed nicht unterstützen.

                                      Gruß, Jürgen

                                      1. Das hat geklappt! Vielen Dank!
                                        Aber warum?

                                        1. Hallo buhbeamter,

                                          Das hat geklappt! Vielen Dank!
                                          Aber warum?

                                          ich bin auch nicht der CSS-Experte, aber ich vermute, dass sich position:fixed und float:left nicht vertragen. Beides zusammen macht auch keinen Sinn. padding:xxx benötigst du, damit der Inhalt nicht über der Navigation liegt. Die Angabe von position:fixed nimmt das Element aus dem Fluss, so wie auch relative oder absolute. Daher liegt es über oder unter den anderen Elementen der Seite. Mit padding schiebst du den Inhalt von der Naviigation weg.

                                          Beachte aber auch meinen anderen Hinweis. Mach mal versuchsweise das Browserfenster ganz flach. Bedenke auch dass es Endgeräte mit sehr kleinem Bildschirm gibt. Ich bin erst am Netbook auf dieses Problem gestoßen.

                                          Gruß, Jürgen

                                          1. Ich habe gerade festgestellt, dass das CSS nur im Firefox korrekt arbeitet. Ich raste noch aus. Im Internetexplorer wandert die Navileiste mit und die Inhaltsseite wird unter das Navi Element geschoben. Weiss jemand warum das so ist? Ist es vielleicht Einstellungssache?

                                            1. Hallo buhbeamter,

                                              Ich habe gerade festgestellt, dass das CSS nur im Firefox korrekt arbeitet.

                                              welcher IE? Welcher doctype? Hast du mal eine auf das wesentliche reduzierte Beispielseite?

                                              Gruß, Jürgen

                                              1. Ok, ich konnte es lösen. Hier der Link zu der Lösung falls noch jemand ein ähnliches Problem hat:

                                                http://forum.de.selfhtml.org/archiv/2009/7/t188835/

                                                1. Hallo buhbeamter,

                                                  Ok, ich konnte es lösen. Hier der Link zu der Lösung falls noch jemand ein ähnliches Problem hat:

                                                  http://forum.de.selfhtml.org/archiv/2009/7/t188835/

                                                  dann verstehst du ja auch meine Frage nach dem doctype.

                                                  Gruß, Jürgen

                        2. Mahlzeit buhbeamter,

                          Ich habe IE und Firefox probiert, beide in der aktuellen Version.

                          Hast Du Deinen Code validiert?

                          Wenn ich "target" komplett entferen öffnen sich die links in einem neuen Browserfenster wie schon beschrieben.

                          Hast Du dann evtl. <http://de.selfhtml.org/html/kopfdaten/basis.htm#zielfenster@title=eine entsprechende base-Einstellung> angegeben?

                          MfG,
                          EKKi

                          --
                          sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Mahlzeit buhbeamter,

    Das funktioniert soweit gut,

    Das wage ich zu bezweifeln.

    solange ich den Einstieg immer über die Indexseite wähle und den Links folge.

    Und schon hatte ich Recht ... wenn irgendetwas an Bedingungen geknüpft ist, kann es niemals "gut funktionieren".

    Jetzt ist es aber so, dass ich aus dem Tool für das diese Hilfe geschrieben wurde einen direkten Einsprung auf das entsprechende HTML haben möchte.

    Dann musst Du entweder für jeden dieser Einsprünge ein eigenes Frameset definieren - oder Du kannst irgendeine Server-seitige Logik (z.B. PHP o.ä.) nutzen, damit das eine Frameset über irgendeinen Parameter von außen erfahren kann, welchen Inhalt es darstellen soll. Aber wenn Du schon so eine Server-seitige Logik hast und nutzen kannst, wäre es äußerst unsinnig Dich mit einem Frameset herumzuquälen ... denn dann könntest Du Deine Seiten (Menü und Inhalt) auch anders zusammenbauen und als *ein* HTML-Dokument ausliefern.

    Nun die Frage: kann ich den einzelnen HTML "sagen", dass deren Inhalt immer nur in dem rechten Frame angezeigt wird und dass der Inhalt des linken Frames nachgeladen werden muss?

    Wenn Du "HTML" schreibst, meinst Du nicht die Seitenbeschreibungssprache, sondern eine Datei, die HTML enthält - richtig?

    Ich frage ja nur mal so. Ist nämlich echt hilfreich, wenn man korrekte Begrifflichkeiten benutzt. So von wegen Verständnis und so.

    Zu Deiner Frage: kein, kannst Du nicht. Eine Datei kann nichts "wissen". Du kannst einem Browser mittels des http://de.selfhtml.org/html/verweise/definieren.htm#zielfenster@title=target-Attributs "sagen", in welchem Fenster/Frame er die im jeweiligen Link oder Formular genannte Ressource darstellen soll ... der Datei ist das aber sowas von egal.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|