Norbert Pfeiffer: Positionieren im Browserfenster

Ich will/muss ein frei positionierbares Objekt in der Mitte des Browserfensters
  anordnen. Unter Netscape geht das problemlos mit
     document.layers['JET'].top = (window.innerHeight / 2) - (hoehe / 2);
     document.layers['JET'].left = (window.innerWidth / 2) - (breite / 2);
Trotz aufwendiger Suche habe ich jedoch keine Entsprechung fuer den IE 4.0
gefunden.
Frage:

  • Ist eine Methode bekannt, wie man die verfuegbare Breite/Hoehe im IE
    ermitteln kann?

Ueber eine hilfreiche Antwort waere ich sehr erfreut.

M. f. G. Norbert Pfeiffer

  1. Hi,

    Ich will/muss ein frei positionierbares Objekt in der Mitte des Browserfensters
      anordnen. Unter Netscape geht das problemlos mit
         document.layers['JET'].top = (window.innerHeight / 2) - (hoehe / 2);
         document.layers['JET'].left = (window.innerWidth / 2) - (breite / 2);
    Trotz aufwendiger Suche habe ich jedoch keine Entsprechung fuer den IE 4.0
    gefunden.
    Frage:

    • Ist eine Methode bekannt, wie man die verfuegbare Breite/Hoehe im IE
      ermitteln kann?

    mit dem MSIE kannst Du mittels
    document.all.body.clientWidth bzw. clientHeight
    die Breite und Höhe des aktuellen Fensters herausfinden. Du kannst auch ein parent bzw. top davorsetzen, um die Gesamtgröße herauszufinden, allerdings *nur* wenn die entsprechende Datei vom selben Server (Domain) ist wie die prüfende Datei.

    Cheatah

  2. Hallo,
    Beim IE funktioniert das Ermitteln der Fenstergröße auch mit window.inner....
    Allerding kannst du dort die Layer-Geschichte vergessen, da dies nur beim NN funzt. Beim IE mußt du das mit CSS in verbindung mit dem .all und/oder .style Objekten bewerkstelligen. Nachlesen kannst du das alles bei SELFHTML.
    Bis danndann
    Thomas

  3. Hallo Norbert,

    Ich will/muss ein frei positionierbares Objekt in der Mitte des Browserfensters
      anordnen. Unter Netscape geht das problemlos mit

    Ja, aber Layer sind eben Netscape-proprietaer. Wenn Du fuer beide Brwoser arbeiten willst, musst du die positionierten Objekte gleich in HTML anders definieren, naemlich:

    <div id="Bereichsname" style="position:absolute; top:???; left:???; width:???; height:???;">
    ...
    </div>

    dann kannst Du im Script notieren:

    if(document.layers)
    {
    document.Bereichsname.[Eigenschaft/Methode Layerobjekt]
    }
    if(document.all)
    {
    document.all.Bereichsname.[Eigenschaft/Methode all-Objekt]
    }

    Relevante Seiten dazu in SELFHTML:
    <../../tecbba.htm> (all-Objekt)
    <../../tecbbf.htm> (Layerobjekt)
    <../../tfba.htm> (Zugriff auf Objekte beim MSIE)
    <../../tfbe.htm> (Zugriff auf Objekte bei Netscape)
    <../../tfca.htm> (Cross-Browser-Beispiel)

    viele Gruesse
      Stefan Muenz

    1. Hallo Stefan,

      das mit den Objekten war nicht mein Problem.
      Die tauchen auf und verschwinden, wo, wann und wie ich es will ... ;-)

      'Cheatah' sei Dank, nun auch in der Mitte des Browserfensters ...

      Fuer NS:
      document.layers['JET'].top = window.innerHeight / 2;
      document.layers['JET'].left = window.innerWidth / 2;
      Fuer IE:
      document.all['JET'].style.pixelTop = document.body.clientHeight / 2;
      document.all['JET'].style.pixelLeft = document.body.clientWidth / 2;

      Das Objekt wurde so definiert:
      <!-- ----------------------------------------- Start Objekt -->
      <DIV ID='JET' style='POSITION:absolute; VISIBILITY:hidden; TOP:0px; LEFT:0px; WIDTH:37px; HEIGHT:19px;'>
      <img src='_img/my-jet.gif' width=37 height=19 border=0>
      </div>
      <!-- ----------------------------------------- Ende Objekt -->

      Natuerlich muss man es dann noch an der gefundenen Position auftauchen lassen:
      Fuer NS:
      document.layers['JET'].visibility = "show";
      Fuer IE:
      document.all['JET'].style.visibility = "visible";

      Gruss Norbert