Alex: DIV im iFrame-SICHTBAREN-BEREICH anzeigen? Hilfe!

Hallo,

es geht um folgendes;
In einem iFrame dynamische Höhe, feste Breite werden Elemente generiert, dementsprechend wird die Seite mal größer, mal kleiner (höhe).
In dem iFrame werden Informationen per Klick angezeigt, in Divs, die mit der Eigenschaft "visibility" versehen sind.

Nun sollen aber diese Nachrichten immer mittig im SICHTBAREN Bereich erscheinen, das kriege ich nicht so hin.
Die Meldungen erscheinen bei immer immer im iFrame-Mitte, auch wenn diese außerhalb des SICHTBEREICHES liegt.

  
[...]  
screenBreite = document.getElementsByTagName('body')[0].offsetWidth;  
screenHoehe = document.getElementsByTagName('body')[0].offsetHeight + 10;  
[...]  
GroesseX = 380;  
GroesseY = 0;  
PosX = (screenBreite / 2) - (GroesseX / 2);  
PosY = (getFrameSize() / 2) - (GroesseX / 2);  

Mit diesen Werten wird die DIV-Meldung initialisiert....

getFrameSize

  
function getFrameSize()  
{  
var frameSize = { frameX:0, frameY:0 }  
  
if(window.innerHeight && window.scrollMaxY)  
{  
 frameSize.frameX = window.innerWidth + window.scrollMaxX;  
 frameSize.frameY = window.innerHeight + window.scrollMaxY;  
}  
else if(this.document.body.scrollHeight > this.document.body.offsetHeight)  
{  
 frameSize.frameX = this.document.body.scrollWidth;  
 frameSize.frameY = this.document.body.scrollHeight;  
}  
else  
{  
 frameSize.frameX = this.document.body.offsetWidth;  
 frameSize.frameY = this.document.body.offsetHeight;  
}  
return frameSize.frameY;  
}  

Ich hoffe Ihr könnt mir ein paar Ansäzte geben, wie ich das Problem beseitige ... danke!

  1. Lieber Alex,

    In einem iFrame dynamische Höhe, feste Breite werden Elemente generiert...
    In dem iFrame werden Informationen per Klick angezeigt...
    Nun sollen aber diese Nachrichten immer mittig im SICHTBAREN Bereich erscheinen...
    Ich hoffe Ihr könnt mir ein paar Ansäzte geben, wie ich das Problem beseitige

    verzichte auf den Iframe und JavaScript. Verwende sinnvolle HTML-Dokumente für Deine Nachrichten/Informationen, die Du sinnvoll verlinkst.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. verzichte auf den Iframe und JavaScript. Verwende sinnvolle HTML-Dokumente für Deine Nachrichten/Informationen, die Du sinnvoll verlinkst.

      Das iFrame sowie das JS ist kein Problem, läuft ja alles super, nur das ich die Div-Meldungen nicht in der Mitte des sichtbaren Breiches angezeigt bekomme, das ist das Problem. Ich muss nur die JS erweitern, mehr nicht, mir fehlt aber der Ansatz, da ich schon fast alles mögliche ausprobiert habe...

      PS: Der Rausschmiss von iFrames sowie JS ist keine Lösung, da das ganze Projekt (ca. 2,5 GB) drauf aufbaut, ist keine private Page.

      1. Lieber Alex,

        PS: Der Rausschmiss von iFrames sowie JS ist keine Lösung, da das ganze Projekt (ca. 2,5 GB) drauf aufbaut, ist keine private Page.

        Du wolltest einen Lösungsansatz. Ich habe Dir einen gegeben, von dem ich ausgehe, dass er sinnvoll ist. Du möchtest ihn nicht haben - kein Problem. :-)

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Du wolltest einen Lösungsansatz. Ich habe Dir einen gegeben, von dem ich ausgehe, dass er sinnvoll ist. Du möchtest ihn nicht haben - kein Problem. :-)

          Mir wäre es nur Recht, aber den Kunden leider nicht, trotzdem danke, wenigstens einer, der hier geantwortet hat.

          1. Hi Alex,

            Du wolltest einen Lösungsansatz. Ich habe Dir einen gegeben, von dem ich ausgehe, dass er sinnvoll ist. Du möchtest ihn nicht haben - kein Problem. :-)
            Mir wäre es nur Recht, aber den Kunden leider nicht, trotzdem danke, wenigstens einer, der hier geantwortet hat.

            Schwingt da Kritik mit? ;) Hier sind alle freiwillig da, wenn noch keiner sonst geantwortet hat, liegt es vermutlich daran, dass die meisten arbeiten und zur Zeit noch keiner, der diese Frage beantworten kann bzw. möchte im Forum vorbeigeschaut hat. Ich kann es übrigens nicht beantworten. Aber ich schätze, es wäre hilfreich, wenn du einen Link dazulegst, wo man sich das ganze mal anschauen kann.

            ciao
            romy

            1. [...] Aber ich schätze, es wäre hilfreich, wenn du einen Link dazulegst, wo man sich das ganze mal anschauen kann.

              Also der Beste Beispiel für diese Funktionalität wäre der C&A Online-Shop, wenn Ihr irgendein Produkt "kauft", und dann euch durchklickt, bis zur der Seite wo man seine Daten einträgt. Dort findet Ihr reichlich Fragezeichen-Symbole, wenn Ihr sie klickt, dann erscheint die Meldung (Div) in der mitte des SICHTBAREN Bereiches. Sowas versuch ich seit heute früh nachzubauen.

              1. Lieber Alex,

                ich glaube ich habe Dich komplett missverstanden.

                Du willst eine Lightbox-artige Layer-Info einblenden. OK. Dann schau Dir mal meine beiden Scripte dazu an: js_popup, bzw. InlinePopup

                Vielleicht findest Du darin eine Lösung für Dein Problem?

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
                1. Vielleicht findest Du darin eine Lösung für Dein Problem?

                  Danke, dein Script entspricht nicht ganz dem, was ich suche, aber dankbar bin ich dennoch, immer :)
                  Aber leider erscheinen auch deine Bilder immer zentriert, also mitte des Browsers-Fensters, leider nicht so wie ich es mir (wie der Kunde es sich) vorgestellt habe/hat.
                  Ich hoffe du kannst den Unterschied zwischen dem was ich Suche (siehe C&A) und dem was du mir anbietest verstehen.

                  Danke, werd dann wohl heute überstunden schieben müssen...

                  1. Lieber Alex,

                    Danke, dein Script entspricht nicht ganz dem, was ich suche, aber dankbar bin ich dennoch, immer :)

                    war auch nur als Inspiration gedacht, keinesfalls als "Lösung"!

                    Aber leider erscheinen auch deine Bilder immer zentriert, also mitte des Browsers-Fensters, leider nicht so wie ich es mir (wie der Kunde es sich) vorgestellt habe/hat.

                    Das ist meine Design-Entscheidung gewesen. Du kannst das aber im Code abändern - er sollte ausreichend kommentiert sein.

                    Ich hoffe du kannst den Unterschied zwischen dem was ich Suche (siehe C&A) und dem was du mir anbietest verstehen.

                    Nein, nicht so wirklich! Im C&A-Shop werden die Inhalte auch zentriert in meinem FF angezeigt. Ob das jetzt eine Greybox, Lightbox oder andere Box ist, das prinzip bleibt immer dasselbe.

                    Danke, werd dann wohl heute überstunden schieben müssen...

                    Tut mir fast leid... aber ich bekomme für meinen Kram nichteinmal Geld (ist ja auch mein Hobby). ;-)

                    Liebe Grüße,

                    Felix Riesterer.

                    --
                    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
                    1. Ich hoffe du kannst den Unterschied zwischen dem was ich Suche (siehe C&A) und dem was du mir anbietest verstehen.

                      Nein, nicht so wirklich! Im C&A-Shop werden die Inhalte auch zentriert in meinem FF angezeigt. Ob das jetzt eine Greybox, Lightbox oder andere Box ist, das prinzip bleibt immer dasselbe.

                      Soll jetzt keine Kritik sein, möchte nur den Unterschied zeigen.
                      Es ist eine Sache den DIV zentriert im Browserfenster zu zeigen (kein problem), eine ganz andere jedoch das DIV im SICHTBAREN Bereich des Browserfenster zu zeigen, sprich wenn der User 1000 Pixel runerscrollt, soll das DIV eben nicht bei 500px angezeigt werden, sondern evtl. bei 600 oder 700, je auf welcher Höhe sich der User befindet.
                      Sorry, aber nichtmal ich versteh das, was ich da eben geschrieben habe, also ist es egal ... danke für die Hilfe, vielleicht schaue ich morgen doch nochmal auf deine Seite.

                      1. Lieber Alex,

                        Sorry, aber nichtmal ich versteh das, was ich da eben geschrieben habe, also ist es egal ... danke für die Hilfe, vielleicht schaue ich morgen doch nochmal auf deine Seite.

                        Du wirst dann window.pageXOffset und window.pageYOffset finden, was Dir in nicht-IE-Browsern weiterhelfen sollte.

                        Beim IE brauchst Du dagegen (bodyElement).scrollLeft bzw. (bodyElement).scrollTop, um das "Vorgescrollte" mit einzuberechnen.

                        Für den IE musst Du außerdem prüfen, ob er im standardkonformen Modus rendert, oder nicht. Diese Prüfung ist wichtig, da sonst Deine Werte für z.B. scrollTop nicht stimmen! Das geht so:

                        var bodyElement = (document.compatMode && document.compatMode == "CSS1Compat") ?  
                                document.documentElement :  
                                document.body || null;
                        

                        Liebe Grüße,

                        Felix Riesterer.

                        --
                        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
                        1. Tach, hier die Lösung falls das einer mal braucht und/oder falls einer es wissen möchte.

                            
                          function getMsgPosition()  
                          {  
                           var msgShowPosition = 0, topPix = 0;  
                           var GroesseX    = 380; // Meldungs-Div (höhe)  
                           var iFrameHeight = 750; // iFrame (höhe)  
                            
                           // Ermittlung des obersten sichtbaren pixel  
                           if(window.pageYOffset)  
                           {  
                              topPix = window.pageYOffset;  
                           }  
                           else if(document.body && document.body.scrollTop)  
                           {  
                              topPix = document.body.scrollTop;  
                           }  
                            
                           // Oberstes Pixel + 375 = mitte des Sichtbaren Bereiches eines Frames  
                           // Oberstes Pixel + 375 - 190 = meldung.style.top;  
                           msgShowPosition = topPix + (iFrameHeight/2) - (GroesseX / 2);  
                           document.getElementById("setTopPix").value = msgShowPosition; // <iput type="hidden" ...  
                          }  
                          
                          

                          Es muss nur noch die neue Höhe (msgShowPosition) aus dem hidden-feld (setTopPix) an das Div übergeben werden.