[JavaScript] iframe höhe in abhängigkeit von hauptframe höhe ändern?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] iframe höhe in abhängigkeit von hauptframe höhe ändern?

    Hallo leute!

    ich habe da ein Problem, vielleicht kann mir jemand von euch weiter helfen!

    Hoffe ihr seht mir nach, daß ich hier neu bin und mich noch nicht zu 100% auskenne ;-)

    also hier mein Problem:

    Im Prinzip möchte ich folgnedes realisieren:
    ich möchte ein Frameset aus 3 untereinanderliegenden frames. Im obersten Frame soll das Menü liegen, darunter sollen eine Reihe von Datensätzen aus einer Datenbank angezeigt werden, und in dem Untersten Frame eine Detailansicht zu jedem Datensatz (wenn man auf einen Datensatz klickt). Die Detailansicht soll aber noch im Menü zu bzw. abgeschaltet werden können.

    Der oberste Frame soll eine feste größe haben, der mittlere und der Untere sollen Variabel sein.

    Soweit stellt das alles auch kein Problem dar und funktioniert auch soweit ganz gut, ABER: ich verwende oben ein JS-Menü welches nach unten aufklappt. Das Problem ist natürlich, daß mir nun die Aufgeklappten Menüs vom Mittleren Frame abgeschnitten werden.


    Egal wie ich das gedreht habe, ich habe keine Lösung gefunden, wie ich das menü überlappen hätte lassen können.

    Also habe ich nun Folgendes versucht:

    Das Frameset besteht nun nur noch aus zwei frames...einem oberen Anzeigefrage in dem das menü liegt, sowie ein I-Frame in dem die Datensätze angezeigt werden.
    im Unteren Frame liegt nach wie vor die Detailansicht!

    Jetz taucht folgnedes Problem auf:

    a) im Internet Explorer wird der IFrame GAR NICHT angezeigt (hab keine ahnung wieso???)
    b) im Firefox wird er angezeigt, jedoch verschwindet der halbe Scrollbalken und dadurch kann ich mir nicht mehr alle datensätze in den sichtbaren bereich scrollen!


    Ich habe zur Lösung meines Problems auch schon mit DIV´s gearbeitet - was eigentlich recht gut gehen würde, jedoch hat es einen haken: sobald ich mit divs arbeite, kann ich mein Deail-Frame nicht mehr variabel in der Größe ändern!

    Hat jemand vorschläge für mich?? bin am verzweifeln und brauch so ein layout unbedingt!!

    unter


    http://www.vitscom.de/problem.jpg

    findet ihr einen Screenshot


    und jetz noch teile des codes, viell. sieht ja jemand was:

    www.vitscom.de/problemcode.txt

    PHP-Code:
    <?php <?php 

    // index.php // je nachdem ob man die Details sehen will oder nicht, wird der untere Frame auf 0 gesetzt
    // ps: ja ich wieß, daß ist schlecht programmiert ;-) aber es soll ja zunächst einfach mal nur funktionieren!
    // Die Details zeigt es korrekt an, hier habe ich keine Probleme!

     
    echo  '<html>'
                    
    .'<head>'
                    
    .' <title>THV-ADMIN 1.0 Tierheim Weiden u.U.e.V.</title>'
                    
    .'<link rel="stylesheet" href="css/styles.css" type="text/css">'
                    
    .'</head>';

                    if(
    $details =="no"){
                       echo 
    '<frameset rows="100%,0%" border="2" frameborder="2" scrolling="no" framespacing="0" >'
                            
    .'<frame  src="./menu.php" name = "menu" scrolling="no" marginwidth="0" marginheight="0">'
                            
    .'<frame  src="./detail.php" name = "member_detail" marginwidth="0" marginheight="0">'
                            
    .'</frameset>';
                    }
                    if(
    $details =="yes" ){
                       echo 
    '<frameset rows="*,305" border="2" frameborder="2" scrolling="no" framespacing="0" >'
                            
    .'<frame  src="./menu.php" name = "menu" scrolling="no" marginwidth="0" marginheight="0">'
                            
    .'<frame  src="./detail.php" name = "member_detail" marginwidth="0" marginheight="0">'
                            
    .'</frameset>';
                    }


     echo 
    '</HTML>';

    // menu.php

       // hier ist oben per Tabelle das Menü eingebunden,
       // das Dropdown-menü ist ein JS
       
    echo  '<html>'
                    
    .'<head>'
                    
    .' <title>THV-ADMIN 1.0 Tierheim Weiden u.U.e.V.</title>'
                    
    .'<link rel="stylesheet" href="css/styles.css" type="text/css">';


                    include (
    "./js/menu_bar.js");
                    include(
    "./js/show_details.js");

               echo  
    '</head>'
                    
    .'<body bgcolor="white">'
                    
    .'<table cellpadding="0" cellspacing="0" border="0" align="left" width="100%" class="tab_form2">'
                    
    .'<tr>'
                    
    .'<td width="20" bgcolor="#6688aa"></td>'
                    
    .'<td align="left" bgcolor ="#6688aa" class ="tiny9">Mitgliederverwaltung</td>'
                    
    .'</tr>'
                    
    .'<tr>'
                    
    .'<td width="20" bgcolor="#6688aa"></td>'
                    
    .'<td height ="3" bgcolor ="#6688aa"></td>'
                    
    .'</tr>'
                    
    .'<tr>'
                    
    .'<td width="20" bgcolor="#BEE0FF"></td>'
                    
    .'<td>';
                    include (
    "./menubar_config.php");

                echo 
    '</td>'
                    
    .'</tr>'


                    
    .'<tr>'
       
                 
    //... usw usw...da kommt halt noch einiges an tabellen..
       
       // unterhalb der gesamten "Menütabelle" wird der I-Frame eingefügt
       // width und height sind normal beide 100% -> nur für screenshot geändert
       // das Iframe müßte sich doch an der Größe der Seite ausrichten, in welcher es verwendet wird
       // das das ebenfalls ein Frame ist, also an der größe des Menü-frames?

    echo '<iframe src="data.php" width="500" height ="100%" scrolling ="hidden" name="member_data"></iframe>';



    ?>

  • #2
    Hey leute, mir ist da gerade noch was aufgefallen!

    Mal davon abgesehen, daß im IE der iframe gar nicht angezeigt wird, kommt es mir so vor, als ob der iframe deswegen abgeschnitten wird, weil ich height = 100% genommen habe!

    Er holt sich ja die gesamte höhe des Frames und sagt dem i-frame: so groß mußt du auch sein!

    Dabei muß der i-Frame ja nur 100% abzüglich des oberen Menüs sein?! Oder sehe ich da jetz was verkehrt?

    hat jemand für mich ne lösung, wie ich dem i-Frame das "mitteilen" kann?

    und noch was: das ganze steht im prinzip online, wenn jemand drauf schauen will bitte eine private message ;-)

    DANKE euch allen

    Kommentar


    • #3
      [JavaScript] iframe höhe in abhängigkeit von hauptframe höhe ändern?

      Hallo leute!

      ich hab folgendes Problem und bekomm es einfach nicht hin! Leider hab ich keinen Code, denn mir ist die vorgehensweise in dem fall TOTAL schleierhaft!!!

      ABer zu meinem Problem:

      ich habe ein Frameset mit 2 Frames, in dem oberen Frame ist noch ein iFrame verbaut.

      im oberen Frame gibt es zunächst einen statischen Menüteil der 100px hoch ist. Darunter kommt dann der iframe. in diesem wird eine DAtei geladen die Datensätze aus einer DAtenbank ausliest.

      dieser i-Frame soll natürlich den gesamten restlichen oberen Frame ausfüllen. gebe ich ihm nun height =100%, dann geht der iframe von der gesamten Frame höhe aus und ein teil des iframes verschwindet unter dem unteren Frame auf nimmer wiedersehen!

      Es müßte doch irgendwie möglich sein, die höhe des oberen Frames per JS zu ermitteln, davon 100 abzuziehen und die höhe des iFrames zu "rekonfigurieren"...

      also in etwa:

      function besteimmehoehe () {
      var h;
      h = document.parent.Heigth;
      h = h-100;
      document.getElementById("member_data").Height = h;


      }

      <body onload="besteimmehoehe()">

      ...

      <ifram height = "80%" id = "member_data">...</ifram> //80% voreinstellung


      könntet ihr mir helfen??? wäre super!! DANKE

      gruß

      unter http://www.vitscom.de/problem.jpg

      findet ihr einen screenshot von dem problem was ich meine!

      Kommentar


      • #4
        http://forum.de.selfhtml.org/?t=138336&m=898586
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Hi,
          auch wenn es nicht wirklich die Lösung zu deinem Problem ist:
          Geh am besten ganz anders an die Sache ran, ich würde dir empfehlen kein Frameset zu benutzen. Wenn es sein muss gib höchstens die Detailansicht in einem Iframe aus.

          Somit hast du keine Probleme mit der überlappung und musst dich nicht mit einem Frameset rumärgern!

          Oder hat es einen speziellen Grund warum du ein Frameset verwenden willst?

          Kommentar


          • #6
            HI!

            ja hat es ;-)

            denn ich möchte ermöglichen, daß die leute ihre Fenstereinteilung selbst "herrumschieben" können. Meine Aufteilung (ca 60:40) ist nur eine Vorschlag meinerseits zu anfang.

            ich möchte im endeffekt ein layout wie in Outlook haben ;-) ..das nachzubilden stellt mich wohl vor einige probleme ;-)

            grüßle

            Kommentar


            • #7
              guckst du hier

              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                hi Danke für den Link!

                bekomms aber nach wie vor nicht hin

                ich muß doch den code des artikels in eine funktion packen und aufrufen durch den onload befehl des body tags meines oberen frames oder??

                oder kann ich die onload auch in den iframe -tag mit reinstecken??

                habe beides probiert, aber mir wird die funktion nicht mal geöffnet...

                *dummkuck*

                Kommentar


                • #9
                  haalt stopp ;-)
                  ich habs glauch ich schon

                  fettes mercü

                  Kommentar


                  • #10
                    ich doch nochmal *args*

                    PHP-Code:

                    // meine Funktion

                    /*

                     function hoehe() {

                     var meinframe = self;
                     var hoehe = -1;
                     var breite = -1;
                     
                     if (meinframe.innerWidth) {
                      // 1. methode: alle browser, die nicht IE sind
                      breite = meinframe.innerWidth;
                      hoehe = meinframe.innerHeight;
                     }

                     else if (meinframe.document && meinframe.document.body && meinframe.document.body.innerWidth) {
                      // 2. methode: Sonderbehandlung für den IE
                      breite = meinframe.document.body.offsetWidth;
                      hoehe = meinframe.document.body.offsetHeight;
                    }

                     hoehe = hoehe-100;
                     alert (hoehe);
                     document.member_data.height = hoehe;
                      
                    }
                    */

                    // mein Aufruf der Funktion

                    echo '<body bgcolor="white" onload ="hoehe()">';


                    // mein iframe:


                    echo ' <iframe src="data.php" width="100%" scrolling ="hidden" id="member_data" name="member_data" ></iframe>'

                    ich bekomme jetz schön die höhe, und möchte diese jetz zurückschreiben in den iFrame! habe die iFrame adressierung so gemacht, wie ichs in der Anleitung von selfhtml verstanden habe! ;-) was jetz nicht heißt, daß ich es richtig verstanden haben ;-)

                    wäre um eure hilfe nochmal dankbar

                    Kommentar


                    • #11
                      ich schreib im minuten takt ;-)

                      naja...


                      aaaaaaaaaalso, die berechnung macht er mir jetz, und er setzt auch das Attribut der höhe!

                      das is scho mal echt super!!!


                      jetz nur noch die LETZTE Hürde!!

                      gibt es eine möglichkeit, beim ziehen des unteren Frames (also dessen größe mit der maus ändern), die Funktion wieder aufzurufen und damit die anzeige neu anzupassen??

                      Kommentar


                      • #12
                        Also bei mir funzt es (IE6 WinXP Sp2) mit ein einer kleinen Anpassungen:
                        Setzen der Höhe
                        Code:
                        document.getElementById('member_data').style.height = hoehe;
                        Und wieso speicherst du self auf ne Var. Kannst diese ja direkt ansprechen. Ist aber nur vonwegen Ästhetik von Belang...

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          Original geschrieben von jahlives
                          Also bei mir funzt es (IE6 WinXP Sp2) mit ein einer kleinen Anpassungen:
                          Setzen der Höhe
                          Code:
                          document.getElementById('member_data').style.height = hoehe;
                          Da fehlt immer noch die Einheit (so der Wert denn ungleich 0 ist).
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            jetz nur noch die LETZTE Hürde!!

                            gibt es eine möglichkeit, beim ziehen des unteren Frames (also dessen größe mit der maus ändern), die Funktion wieder aufzurufen und damit die anzeige an die neuen gegebenheiten anzupassen??

                            Kommentar


                            • #15
                              arbeite seit jahren nicht mehr mit frames, aber vielleicht hilft ein
                              PHP-Code:
                              framename.onresize 
                              gruß
                              peter
                              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                              Meine Seite

                              Kommentar

                              Lädt...
                              X