heinerle: offsetWidth im Firefox

Hallo community,
eigentlich ist meine Frage recht kurz.
Ich benötige zum Positionieren eines Elementes den tatsächlich sichtbaren Bereich einer Webseite.
Dafür wollte ich eigentlich mittels offsetWidth die angezeigte Breite des Bodys auslesen. Laut SelfHTML sollte dies auch beim Firefox funktionieren. Tut es aber bei mir nicht. Da mein Firefox 2.0.x sowieso etwas wacklig ist, könnte es ja auch ein Fehler im Browser sein.
Ist es ein Fehler im Browser, oder eine fehlerhafte Angabe in SelfHTML?
Gibt es eventuell eine alternative Lösung für die tatsächliche Breite ausser offsetWidth (screen nützt mir in diesem Fall nichts, das könnte das Layout zerstören, sobald links oder rechts noch irgendwelche Browserplugins aktiv sind)?
Ich möchte nicht unbedingt wegen dieser Kleinigkeit erst irgendwelche ausgefeilten Browserweichen einbauen.

thx
heinerle

  1. Hi.
    Das sollte helfen.

    // Breite und Hoehe des Anzeigebereiches im Browserfenster ermitleln
    var fensterbreite,fensterhoehe;

    if (self.innerHeight) // alle außer Explorer
    {
     fensterbreite = self.innerWidth;
     fensterhoehe = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
     // Explorer 6 Strict Mode
    {
     fensterbreite = document.documentElement.clientWidth;
     fensterhoehe = document.documentElement.clientHeight;
    }
    else if (document.body) // andere Explorer
    {
     fensterbreite = document.body.clientWidth;
     fensterhoehe = document.body.clientHeight;
    }

    // Breite und Hoehe der Seite
    var seitenbreite, seitenhoehe;
    function getSeitenbreite_hoehe()
    {
     var test1 = document.body.scrollHeight;
     var test2 = document.body.offsetHeight
     if (test1 > test2) // alle außer Mac Explorer
     {
      seitenbreite = document.body.scrollWidth;
      seitenhoehe = document.body.scrollHeight;
     }
     else // Mac Explorer
          // Explorer 6 Strict, Mozilla und Safari
     {
      seitenbreite = document.body.offsetWidth;
      seitenhoehe = document.body.offsetHeight;
     }
    }

    mfg
    Knusperklumpen

  2. Hi,

    Ich benötige zum Positionieren eines Elementes den tatsächlich sichtbaren Bereich einer Webseite.

    verstehe ich nicht. Wieso das?

    Dafür wollte ich eigentlich mittels offsetWidth die angezeigte Breite des Bodys auslesen. Laut SelfHTML sollte dies auch beim Firefox funktionieren. Tut es aber bei mir nicht.

    Wenn Du in Deinem JavaScript-Code "offsetWidth des Bodys" notierst, wird das tatsächlich nicht funktionieren.

    Ist es ein Fehler im Browser, oder eine fehlerhafte Angabe in SelfHTML?

    Vielleicht ist es auch eine fehlerhafte Angabe bei Dir. Wissen können wir das nicht - Du verschweigst uns wesentliche Informationen.

    Gibt es eventuell eine alternative Lösung für die tatsächliche Breite ausser offsetWidth

    Gegenfrage: Gibt es eventuell eine alternative Lösung für Dein _Problem_? JavaScript ist garantiert die letzte Option, die Du wählen solltest.

    (screen nützt mir in diesem Fall nichts,

    Das screen-Objekt nützt *nie* etwas.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Hallo,

    Dafür wollte ich eigentlich mittels offsetWidth die angezeigte Breite des Bodys auslesen. Laut SelfHTML sollte dies auch beim Firefox funktionieren. Tut es aber bei mir nicht.

    Bei mir schon. Alternativ könntest du aber auch einfach window.innerWidth verwenden und für den IE eben noch eine kleine Extrawurst machen.

    Da mein Firefox 2.0.x sowieso etwas wacklig ist, könnte es ja auch ein Fehler im Browser sein.

    Was wird ausgegeben, wenn du javascript:alert(document.body.offsetWidth) in die Adresszeile eingibst?

    mfg. Daniel