Fenstergrösse / Body-Grösse
René Kerner
- javascript
0 Gernot Back0 René Kerner0 Detlef G.0 Struppi
Hi!
Ich habe für meine Homepage ein Skript geschrieben, dass aus einem Verzeichnis alle Thumbs einliest und per style tag schön wild (per zufallsgenerator) auf dem Bildschirm verteilt anzeigt. Mit festen Werten ist das kein Problem wie hier:
zufall1=Math.round(Math.random()*(800 - 200)); für ein IE-Fenster
zufall2=Math.round(Math.random()*(600 - 300)); 800 x 600 Pixel#
Jetzt will ich das abhängig machen von der aktuellen Bildschirmgrösse, also:
var MaxX = GetWidth();
var MaxY = GetHeight();
zufall1=Math.round(Math.random()*(MaxX - 200));
zufall2=Math.round(Math.random()*(MaxY - 300));
GetWidth liefert den richtigen Wert, aber Get Height nicht.
Hier die beiden Funktionen:
function GetWidth()
{
if (window.innerWidth) return window.innerWidth;
else if (document.body && document.body.offsetWidth) return document.body.offsetWidth;
else return 0;
}
function GetHeight()
{
if (window.innerHeight) return window.innerHeight;
else if (document.body && document.body.offsetHeight) return document.body.offsetHeight;
else return 0;
}
P.S. ich teste momentan nur im IE6, aber wie man sieht ist die "Sicherung" für NS und Opera schon eingebaut...
Ich hoffe jemand kann mir weiterhelfen...
Viele Grüsse,
René
Hallo René,
function GetHeight()
{
if (window.innerHeight) return window.innerHeight;
else if (document.body && document.body.offsetHeight) return document.body.offsetHeight;
else return 0;
}
Teste stattdessen auch mal doccument.body.clientHeight.
Es kann auch am DOCTYPE liegen, wenn es nicht funktioniert.
Alternativ versuche doch mal, alles icn deinem Dokument in ein alles umschließendes DIV zu packen und dessen offsetHeight auszulesen.
Ich hoffe jemand kann mir weiterhelfen...
Gruß Gernot
Teste stattdessen auch mal doccument.body.clientHeight.
Es kann auch am DOCTYPE liegen, wenn es nicht funktioniert.
Alternativ versuche doch mal, alles icn deinem Dokument in ein alles umschließendes DIV zu packen und dessen offsetHeight auszulesen.
Ich hoffe jemand kann mir weiterhelfen...
Gruß Gernot
clientHeight hab ich schon probiert...
mhm was heisst es kann am DOCTYPE liegen?!
ich weiss was DOCTYPE ist, aber nicht wie sich das auswirkt.
zur Zeit: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
ich versuch das mal eben mit dem DIV-Tag...
danke schonmal
Teste stattdessen auch mal doccument.body.clientHeight.
Es kann auch am DOCTYPE liegen, wenn es nicht funktioniert.
Alternativ versuche doch mal, alles icn deinem Dokument in ein alles umschließendes DIV zu packen und dessen offsetHeight auszulesen.
Gruß Gernot
Geht beides net... habs mit div-tag probiert. document.getElementById('alles').offsetHeight bzw offsetWidth geben dieselben Werte zurück wie GetHeight() und GetWidth() in "UR"-Form
*grübel*
Aaaaaalsoooooooooo ich bin schlauer!
Es liegt am DOCTYPE!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
welcher wäre denn für mich der richtige...??? *mal ganz blöd fragt*
Gruß René
Hallo René,
Aaaaaalsoooooooooo ich bin schlauer!
Es liegt am DOCTYPE!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
welcher wäre denn für mich der richtige...??? *mal ganz blöd fragt*
Probier doch mal den:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Ich muss allerdings sagen, ich probier da auch imer nur wild rum, ohne eigentlich zu wissen, was ich tue.
Mich hatte bei einer ähnlichen Frage da auch mal Eddi unlängst entsprechend unterrichtet, sonst wäre ich da auch nie drauf gekommen:
http://forum.de.selfhtml.org/archiv/2004/8/88464/#m528171
Aber dass es mit dem <DIV id="alles"> nicht funktioniert, wundert mich jetzt. Ich habe da unabhängig vom Doctype schon Erfolg mit dem Auslesen der offsetHeight gehabt.
Gruß Gernot
Hallo René,
Aaaaaalsoooooooooo ich bin schlauer!
Es liegt am DOCTYPE!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">welcher wäre denn für mich der richtige...??? *mal ganz blöd fragt*
Probier doch mal den:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Ui ui ui also damit gings auch nicht. Liegt an der .dtd-Datei...
Wenn ich die ganz weglasse funzt es!
Ich muss allerdings sagen, ich probier da auch imer nur wild rum, ohne eigentlich zu wissen, was ich tue.
In einer HTML-Referenz hab ich gelesen, dass es mittlerweile soviele von diesen dtd-Templates gibt, dass kaum einer sagen kann was wofür gut ist. Ich lasse es jetzt erstmal ohne. Aber mich würde doch mal interessieren welche ich nehmen MUß/KANN oder wo ich sowas nachschauen kann, wann ich was brauche...
Mich hatte bei einer ähnlichen Frage da auch mal Eddi unlängst entsprechend unterrichtet, sonst wäre ich da auch nie drauf gekommen:
http://forum.de.selfhtml.org/archiv/2004/8/88464/#m528171
Aber dass es mit dem <DIV id="alles"> nicht funktioniert, wundert mich jetzt. Ich habe da unabhängig vom Doctype schon Erfolg mit dem Auslesen der offsetHeight gehabt.
Gruß Gernot
Willkommen in den tiefen des MS Internet Explorer:
"Das ist kein Fehler, das ist ein Feature..." ;-)
Danke vorerst!
René
Hallo René,
hast du mal versucht im CSS für html und body height:100% anzugeben?
Auf Wiederlesen
Detlef
GetWidth liefert den richtigen Wert, aber Get Height nicht.
Hier die beiden Funktionen:
////////////////////////////////////////////////////////////
// getWinSize(window)
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;
}
////////////////////////////////////////////////////////////
// Der IE hat 2 verschiedene Objekte für den strict und quirks Mode.
function getBody(w)
{
return w.document.documentElement ? w.document.documentElement : w.document.body || null;
}
Die getBody() funktion ist der Schlüssel, der IE 6 unterscheidet zwischen Quirks und Standardmode.
Aufrufen kannst du die funktion so:
var size = getWinSize();
alert(size.height + ' x ' + size.width);
Struppi.