Bedeutung von document.documentElement
Ben2
- javascript
Hallo,
ein anderes Stichwort und eine weitere Frage zu Grundsätzlichem - vielleicht mag mich auch hier jemand von Euch aufklären. Es geht um die genaue Bedeutung von
document.documentElement
insbesondere im Unterschied von
document.documentElement.offsetWidth
und
document.body.offsetWidth
Welche Werte werden hier jeweils ermittelt, wo liegen die spezifischen Unterschiede und wie sieht es hier jeweils mit der Browserunterstützung aus - insbesondere unter Anwendung der Doctype-Varianten "transitional" und "stict" ?
Mit freundlichen Grüßen
Ben 2
document.documentElement
ist die Referenz auf das Rootelement des Documentes, in HTML ist dies:
<html>
in XML dann das auf ganz anders heißen.
document.body
ist ein Kindelement des Rootelementes
Hinsichtlich der Breite können die Werte für den Body und für das Rootelement deutlich voneinander Anweichen. Gründe hierfür liegen in den Angaben für Padding und Margin für das html- bzw. body-Element. Desweiteren kannst Du per CSS die Breite des Bodies auch setzen, z.B.:
body{width:50%;}
Mit freundlichen Grüßen
Ben 2
Wieviel Namen willst Du Dir noch geben, ich benenne mich doch auch nicht nach der Anzahl meiner Beiträge.
Gruß
Avalon
Mit "document.body.offsetWidth" kann ich die verfügbare Bildschimbreite ermittelt, dieses funktioniert leider nicht mehr (?) im IE6 mit DOCTYPE "strict" - hier soll (muss) ich statt dessen
document.documentElement.offsetWidth verwenden.
Wie kann ich dann über alle Browser- und DOCTYPE-Varianten hinweg einheitlich ermitteln, wie breit der verfügbare (dh. für das HTML-Dokument nutzbare) Teil des Bildschims ist ...
Wieviel Namen willst Du Dir noch geben, ich benenne mich doch auch nicht nach der Anzahl meiner Beiträge.
Das ist für mich natürlich kein ausreichender Grund, es nicht zu tun
:-)
Gruß
Ben 2
Wieviel Namen willst Du Dir noch geben, ich benenne mich doch auch nicht nach der Anzahl meiner Beiträge.
Zumal sich da gerade einer BEN nennt - der ich gar nicht bin !!!!
Wen meinst Du?
Ben1, dessen Posting mit:
Funktionieren tut beides, aber das ist ja öfter so. Wie verhält es sich diesbezüglich in den aktuellen Browsern (IE 5+ und IE6, Firefox etc.) und hier jeweils unter Anwendung der Doctype Varianten "transitional" und "stict" ?
oder Ben2, dessen Posting mit:
Welche Werte werden hier jeweils ermittelt, wo liegen die spezifischen Unterschiede und wie sieht es hier jeweils mit der Browserunterstützung aus - insbesondere unter Anwendung der Doctype-Varianten "transitional" und "stict" ?
endet?
Du wirst zugeben, daß die Zitate auf die gleiche Autorenschaft schließen lassen.
Gruß
Avalon
Wen meinst Du?
Du wirst zugeben, daß die Zitate auf die gleiche Autorenschaft schließen lassen.
Wer bestreitet das ausser Dir ............ :-/
Mit "document.body.offsetWidth" kann ich die verfügbare Bildschimbreite ermittelt, dieses funktioniert leider nicht mehr (?) im IE6 mit DOCTYPE "strict" - hier soll (muss) ich statt dessen
Das konntest Du noch nie, hätte Dir aber spätestens beim sorgfälltigen Lesen meiner erste Antwort oben auffallen müssen.
document.documentElement.offsetWidth
So wurde es schon immer gemacht (Ausnahme Netscape da geht auch window.outerWidth).
Die Breite des bodies kannst Du auch erst ermitteln, sobald es einen body gibt, also noch nicht im head eines Dokumentes. Aber wie gesagt, die Breite des Bodies stimmt selten mit der Breite des Dokumentes überein.
Gruß
Avalon
Hab gerade Deinen Beitrag nochmal sorgfälltig gelesen:
Mit "document.body.offsetWidth" kann ich die verfügbare Bildschimbreite ermittelt,
Das ist ja hahnebüchender Unsinn, den Du da von Dir gibst. Was um alles in der Welt hat die Bildschirmbreite mit der Breite Deines Dokumentes oder mit Deiner Fensterbreite zu tun?
Gruß
Avalon
Mit "document.body.offsetWidth" kann ich die verfügbare Bildschimbreite ermittelt, dieses funktioniert leider nicht mehr (?) im IE6 mit DOCTYPE "strict" - hier soll (muss) ich statt dessen
document.documentElement.offsetWidth verwenden.
Wie kann ich dann über alle Browser- und DOCTYPE-Varianten hinweg einheitlich ermitteln, wie breit der verfügbare (dh. für das HTML-Dokument nutzbare) Teil des Bildschims ist ...
Nicht Bildschrimbreite, du meinst die Browserfensterbreite.
Die kannst du so ermitteln:
////////////////////////////////////////////////////////////
function getWinSize(win)
{
if(!win) win = window;
var s = new Object();
if(typeof win.innerWidth != 'undefined')
{
s.width = win.innerWidth;
s.height = win.innerHeight;
}
else
{
var obj = getBody(win);
s.width = parseInt(obj.clientWidth);
s.height = parseInt(obj.clientHeight);
}
return s;
}
function getBody(w)
{
return (w.document.compatMode && w.document.compatMode == "CSS1Compat") ?
w.document.documentElement : w.document.body || null;
}
Struppi.
Hy Struppi,
herzlichen Dank für Deine direkte unkomplizierte Hilfe - Du hast mir 2003 in einem langen Posting mitten in der Nacht, als ich noch Gunnar hieß - Du erinnerst Dich ;\ - in einer vergleichbaren Frage geholfen.
Von Dir stammt übrigens auch der Tipp mit "document.documentElement" im Zusammenhang mit dem Internet Explorer 6 und Doctype "strict".
Das eigentliche Problem hinter der Frage ist:
wie kriege ich eine mit CSS definierte Box mit Hilfe von Javascript dynamisch immer auf die ganze --- Browserfensterbreite ---.
Unter Doctype "transitional" funktionierte in allen Browsern:
ebene = document.getElementById("box");
ebene.style.width = document.body.scrollLeft+document.body.clientWidth+"px";
Im IE 6 und Firefox funktioniert dieses nicht mehr !
Im IE 6 hilft "document.documentElement" als Ersatz für document.body - aber Firefox verweigert sich total.
Den Doctype-Switch zwischen IE 5 und 6 über eine if-Abfrage und den compatMode zu handhaben - wie von Dir dargestellt - leuchtet mir ein.
Was mache ich aber mit Firefox in diesem Punkt ?
Magst Du mir abermals entscheidend weiterhelfen ?
Mfg Ben 1 und 2