Felix Riesterer: Breite des Viewports im IE wenn body margins hat?

Beitrag lesen

Lieber Gunnar,

Etwas weiter auf dem Holzweg?

Die Frage, wozu du überhaupt JavaScript brauchst, hast du nicht beantwortet?

Was ist dein Problem, was du damit zu lösen gedachtest (und wofür es vielleicht auch eine CSS-Lösung gibt)?

eine reine CSS-Lösung scheint es nicht zu geben. Die Aufgabenstellung ist eigentlich völlig klar... nur ist die scheinbare CSS-Lösung keine erfolgreiche, sonst hätte ich das längst so gelöst.

Nochmal für Dich: Es geht um den IE6(!), der mit CSS so seine Eigenheiten entwickelt. Das, was Du als CSS-Lösung bezeichnest, erfüllt nicht die Aufgabenstellung. Daher diese extra für Dich:

Gegeben sei ein beliebiges HTML-Dokument mit beliebigen CSS-Regeln für das <body>-Element. In dieses Dokument soll per JavaScript ein zusätzliches Element als erstes Kindelement eingefügt werden, um eine Art "Layer" zu erzeugen. Es geht um eine Nachempfundene Informationsleiste, wie sie im IE eingeblendet wird, wenn z.B. Popups geblockt, oder Plugins benötigt werden. Diese Leiste soll dem User anbieten, dass er den IE8 installiert (siehe ie6update.com - nur dass die dortige Lösung zusätzlich noch jquery benötigt und von daher für mich erst recht nicht in Frage kommt).

Dieses neue firstChild soll nun die verfügbare Anzeigebreite bedecken (aka Breite des Viewports). Daher hatte ich folgenden css-basierten Lösungsansatz:

#mein_element {  
    position: absolute;  
    top: 0px;  
    left: 0px;  
    right: 0px;  
}

Da ich ein <p>-Element für ausreichend halte, wollte ich auf <div> verzichten. Und ja Struppi, die eventuell vorhandenen margin- und padding-Werte sind zu "löschen", daran habe ich gedacht.

Obige Lösung kann zu ungewollten Zwischenräumen führen, wenn das <body>-Element selbst mit margins versehen ist, denn dann hat unsere Leiste rechts und links einen Abstand zum Fensterrahmen, den sie aber nicht haben soll. Da mein Script aber auf verschiedenen Seiten bei verschiedenen Ausgangssituationen dieselbe Erscheinungsform haben soll, kann ich im CSS den margin-Wert des <body>-Elements nicht einfach mit einrechnen, da dieses eine "Seiten-spezifische" Lösung wäre, die auf einer anderen Seite bei anderen CSS-Regeln prompt versagt. Daher muss die Lösung mittels JavaScript erfolgen, welches solche margin-Werte ermitteln, bzw. asugleichen soll.

Falls Du wirklich helfen willst, dann nimm einen IE6 und schau auf meiner Seite vorbei, denn dort wird das Script eingesetzt. Du kannst es auch bei mir herunterladen ("ie-update") und testen.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)