Fehler im IE - warum?
Ede
- javascript
Wieso gibt mir die folgende Funktion im IE6 einen fehler "Ungültiges Argument" zurück? IM Firefox klappt alles problemlos.
function Resize_Navigation(id) {
var height;
height = window.innerHeight-125;
if (height<520) height=520;
document.getElementById(id).style.height = height-20;
}
(Übergeben wird die ID eines DIVs)
Grüße,
weil IE kein "innerheight" kennt : http://de.selfhtml.org/javascript/objekte/window.htm#inner_height nutze die ketzerische iE sonderversion...
MFG
bleicher
Super! Funktioniert! Dankeschön!
Hier nochmal der Quelltext falls er jemanden interessiert (auch wenn man bei mir eher wenig lernen kann :-P )
function Resize_Navigation(id) {
var height;
if (navigator.appName.indexOf("Explorer") != -1) {height = document.body.clientHeight;}
else {height = window.innerHeight;}
height = height-125;
if (height<520) height=520;
document.getElementById(id).style.height = height-20 + "px";
}
@@Ede:
Hier nochmal der Quelltext falls er jemanden interessiert
Allenfalls als schlechtes Beispiel imteressant.
if (navigator.appName.indexOf("Explorer") != -1) {height = document.body.clientHeight;}
else {height = window.innerHeight;}
Nein! Frage einen Client nie nach dem Namen! Frage nach seinen Fähigkeiten!
Was du willst, ist Folgendes:
if (document.body.clientHeight)
var height = document.body.clientHeight;
else
var height = window.innerHeight;
Das ließe sich auch http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder@title=einfacher so schreiben:
var height = (document.body.clientHeight ? document.body.clientHeight : window.innerHeight);
Aber es geht noch besser: Für „nimm das erste, wenn es nicht falsch ist, sonst das zweite“ gibt es einen Operator: '||
':
var height = document.body.clientHeight || window.innerHeight;
Live long and prosper,
Gunnar
Hallo,
danke für die wichtigen Anmerkungen!
var height = document.body.clientHeight || window.innerHeight;
So einfach ist das leider nicht. clientHeight ist uneindeutig je nach Rendermodus, liefert entweder die Viewport-Höhe (das, was gerade vom Dokument sichtbar ist) oder die Dokument-Höhe (das gesamte Dokument inklusive dem, was gerade durch Scrolling unsichtbar ist). Auf jeden Fall sollte man zuerst window.innerHeight abfragen, dann document.documentElement.clientHeight, erst dann document.body.clientHeight.
Siehe z.B. http://www.howtocreate.co.uk/tutorials/javascript/browserwindow.
Mathias
So einfach ist das leider nicht. clientHeight ist uneindeutig je nach Rendermodus,
eigentlich schon, ausser man versucht seinen browser absichtlich in den quirksmode zu bringen und hofft, dass die fehlerkorrektur des browsers besser ist als das eigene unvermögen halbwegs vernünftigen code zu schreiben
Hallo,
IM Firefox klappt alles problemlos.
document.getElementById(id).style.height = height-20;
spätestens bei dieser Zeile sollte dein Firefox dich aber mit einer Meldung in der Fehlerkonsole beglücken. Denn was du da zuweist, ist eine reine Zahl - und somit kein gültiger Wert für die CSS-Eigenschaft heigth. Die Zuweisung muss ignoriert werden.
So long,
Martin
spätestens bei dieser Zeile sollte dein Firefox dich aber mit einer Meldung in der Fehlerkonsole beglücken. Denn was du da zuweist, ist eine reine Zahl
Danke, hab ich grade eben selber rausgefunden...
Hat aber trotzdem funktioniert... ohne Fehlermeldung ;-)
Das eigentliche Problem war das, das bleicher beschrieben hat
Hi,
spätestens bei dieser Zeile sollte dein Firefox dich aber mit einer Meldung in der Fehlerkonsole beglücken. Denn was du da zuweist, ist eine reine Zahl
Danke, hab ich grade eben selber rausgefunden...
Hat aber trotzdem funktioniert... ohne Fehlermeldung ;-)
Dann solltest du deine Seite mal aus dem Quirks Mode holen.
MfG ChrisB