DOCTYPE-Switch beim MSIE umgehen
Stefan Einspender
- css
Hallo ForumsleserInnen,
unten der Quelltext einer Beispielseite, hier zunächst das Problem:
Also, ich habe eine Seite, auf der sich eine Tabelle mit 100% Höhe
befindet. In dieser Tabelle gibt es drei Zellen, jeweils eine pro
Reihe, dabei hat die unterste und die oberste eine feste Höhe, die
mittlere soll den restlichen Platz ausfüllen. Soweit die Theorie,
in Mozilla 1.3 und Opera 7.02 funktioniert die Sache auch problemlos.
Schwierig wird es im MSIE 6.0 SP1, der zeigt mir mit DOCTYPE die
mittlere Zelle mit der Höhe der Seite und nicht der restlichen
Höhe innerhalb der Tabelle an. Wenn ich den DOCTYPE rausnehme,
dann zeigt er es korrekt an. Nun will ich aber valide Seiten
bauen, wie kann ich den MSIE dazu bringen, mir es auch dann so
anzuzeigen, wie ich es will?
Viele Grüße,
Stefan
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html style="height:100%;">
<head>
<title>test</title>
</head>
<body style="height:100%;margin:0;padding:0;">
<table style="height:100%;width:750px;">
<tr><td style="height:100px;"> </td></tr>
<tr><td style="border:1px solid #FF0000;height:100%;"> </td></tr>
<tr><td style="height:100px;"> </td></tr>
</table>
</body>
</html>
hi Stefan,
wie kann ich den MSIE dazu bringen, mir es auch dann so
anzuzeigen, wie ich es will?
Dein DOCTYPE sieht so aus:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Streich da einfach die "zweite Zeile" weg und laß folgendes übrig:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Enjoy!
Grüße aus Berlin
Christoph S.
Hallo Christoph,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">Streich da einfach die "zweite Zeile" weg und laß folgendes übrig:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
ist der MSIE nicht mehr im validen Modus ... naja, was soll's ;-)
Dieses Teil ist sowieso eine, sorry, Mistkrücke, ich habe es jetzt
so hingebogen: http://test.zzdd.de/beispiel1/
Wer eine Idee hat, wie ich im MSIE den Rand um den Iframe wegbekomme
(valid), nur her damit :-)
Und ansonsten könnt Ihr gern mal schauen, ob es bei Euch auch so
ausschaut: http://test.zzdd.de/beispiel1/screenshot.gif
Ich weiß, viel ist da nicht dazu, aber würde der MSIE mal vernünftig
CSS unterstützen, hätte ich nicht solange gebraucht, eine so simple
Sache umzusetzen. Dann bräuchte ich keine Iframe, könnte HTML 4.01
Strict verwenden ...
Viele Grüße,
Stefan
morgens,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
ist der MSIE nicht mehr im validen Modus
wieso? Ich hab deine Seite mit meiner kleinen Streichung an den Validator übergeben, und der hat mir gratuliert zu meiner professionellen Arbeit. Dein Problem hat der IE, wenn ich das richtig sehe, nur mit "loose.dtd" gehabt, aber was ihm daran mißfällt, weiß ich auch nicht
Wer eine Idee hat, wie ich im MSIE den Rand um den Iframe wegbekomme (valid), nur her damit :-)
Da gabs doch irgendwie sowas mit border=0 ... *g*
Und ansonsten könnt Ihr gern mal schauen, ob es bei Euch auch so
ausschaut: http://test.zzdd.de/beispiel1/screenshot.gif
Tut es, sogar mitm Konqueror
Christoph S.
hi
Wer eine Idee hat, wie ich im MSIE den Rand um den Iframe wegbekomme (valid), nur her damit :-)
Da gabs doch irgendwie sowas mit border=0 ... *g*
der iframe ist ein frame und will auch so beahndelt werden...also frameborder :)
[http://selfhtml.teamone.de/html/frames/eingebettete.htm#eigenschaftenlink:http://selfhtml.teamone.de/html/frames/eingebettete.htm#eigenschaften]
nur das passende gegenstück in CSS fehlt, "border:" bringt zumindest beim IE rein garnichts.
so long
ole
(8-)>
Hallo Ole,
nur das passende gegenstück in CSS fehlt, "border:" bringt zumindest beim IE rein garnichts.
doch, man muß nur wissen, wo es hin muß und zwar in die eingebettete
Datei. OK, ich gebe zu, bin auch nur durch Zufall drauf gekommen ;-)
Also dann hier die aktuelle Version: http://test.zzdd.de/beispiel1/
Und so soll es ausschauen:
<img src="http://test.zzdd.de/beispiel1/klein.gif" border="0" alt="">
Größer?
http://test.zzdd.de/beispiel1/screenshot.gif
Bei wem und vor allem in welchem Browser sieht es nicht so aus? Ohne
CSS natürlich, was hier auch sehr unschön ist, weil dann der Iframe
winzig klein wird, aber da kann ich nix machen, schließlich gibt
es das height-Attribut für Tabellen nicht. Kann maximal dem Iframe
per HTML eine feste Höhe und Breite geben und die dann mittels CSS
überschreiben.
Ist erstmal nicht so wichtig, wo klappt es jetzt nicht, d.h. sieht
es anders aus als auf dem Screenshot?
Viele Grüße,
Stefan
hi
mit "border:" an der richtingen stelle hab ich wieder was neues gelernt :) thx
Ist erstmal nicht so wichtig, wo klappt es jetzt nicht, d.h. sieht
es anders aus als auf dem Screenshot?
bei mir (win NT 4) sieht das ganze auf folgenden Browsern anders aus:
NN 4.78
sieht man nicht viel von dem was es eigendlcih sein soll
(ist aber verständlich, da der ja keine iframes versteht :))
NN 6.22
ich sehe oben und unten 2 große blaue balken und dazwischen einen weißen zwischenraum der etwa 10px hoch ist
IE 6 + MOZ 1.3
alles top :)
so long
ole
(8-)>
Hallo Ole,
NN 4.78
bist Du Museumswärter? ;-)
(Nein, natürlich bekommen auch Benutzer von Oldbrowsern was zu
sehen, nur was, da bin ich mir noch nicht sicher ;-)
NN 6.22
ich sehe oben und unten 2 große blaue balken und dazwischen einen weißen zwischenraum der etwa 10px hoch ist
Sollte gelöst sein, d.h. er sollte jetzt den Iframe anzeigen, wenn
auch vielleicht nicht in der richtigen Höhe:
http://test.zzdd.de/beispiel1/
Viele Grüße,
Stefan
hi
bist Du Museumswärter? ;-)
nicht freiwillig, cheffe besteht darauf den 4er in jedem projekt zu berücksichtigen...koste es was es wolle *seuftz*
NN 6.22
Sollte gelöst sein, d.h. er sollte jetzt den Iframe anzeigen, wenn
auch vielleicht nicht in der richtigen Höhe:
so leid es mir tut, bei mir hat sich nichts am erscheinungsbild geändert...immer noch das gleiche.
so long
ole
(8-)>
Hallo Ole,
so leid es mir tut, bei mir hat sich nichts am erscheinungsbild geändert...immer noch das gleiche.
ärgerlich, sehr ärgerlich ... also irgendwie scheint er ja mit der
Höhe des Iframes Probleme zu haben. Jetzt vermute ich mal, wenn ich
die absolut angebe, funktioniert es. Nur dann paßt er sich ja nicht
mehr der Gesamthöhe des Browserfensters an, auch nicht so toll ...
Naja, unter http://test.zzdd.de/beispiel1/nc622.html habe ich jetzt
mal eine Variante, wo Netscape 6.22 den Iframe hoffentlich auch an-
zeigt. Nur wie bekomme ich es hin, dass zumindest in den anderen
Browsern die Tabelle auf 100% Höhe ist und der Iframe diese Höhe
abzüglich der zwei blauen Zellen einnimmt?
Viele Grüße,
Stefan
hi
Naja, unter http://test.zzdd.de/beispiel1/nc622.html habe ich jetzt
mal eine Variante, wo Netscape 6.22 den Iframe hoffentlich auch anzeigt.
jetzt siehts so aus wie in den anderen :)
beim rest kann ich dir leider nicht helfen :(
so long
ole
(8-)>
Hallo nochmal,
hi
Naja, unter http://test.zzdd.de/beispiel1/nc622.html habe ich jetzt
mal eine Variante, wo Netscape 6.22 den Iframe hoffentlich auch anzeigt.jetzt siehts so aus wie in den anderen :)
hm, habe jetzt http://test.zzdd.de/beispiel1/ nochmal modifiziert.
Wenn es klappt, kannst Du es mir ja verraten, damit ich mich freue,
ansonsten bleibt es jetzt so. Klar ist es blöd, wenn im NC 6.22 der
Iframe fehlt, aber ich habe da im Moment wirklich keine Lösungsidee.
Viele Grüße,
Stefan
Hi Stefan,
http://test.zzdd.de/beispiel1/
Bei wem und vor allem in welchem Browser sieht es nicht so aus?
Opera 6.05: Die mittlere Zelle wird exakt bis an das untere Ende des Fensters ausgedehnt, die darunter liegt somit außerhalb des sichtbaren Bereichs.
Opera 7.03: Die mittlere Zelle hat eine Höhe von 100% des Fensters, ragt somit darüber hinaus. Von einem Iframe ist weit und breit keine Spur, da natürlich auch kein Scrollbalken erscheint.
Opera 7.10: Alles ok
Tja, bleibt nur, dir den Einsatz eines gewöhnlichen Framesets zu raten, die Probleme sind ohnehin die gleichen wie bei einem Iframe und du weißt, worauf man achten muss.
Grüße,
Roland
hallo Roland,
Opera 7.10: Alles ok
"ältere" Opera hab ich nicht mehr und kanns nicht vergleichen, aber in Opera 7.11 ist nicht "alles in Ordnung". Da hängt der untere blaue Balken im unsichtbaren Bereich, allerdings ist die ganze Seite scrollfähig.
Tja, bleibt nur, dir den Einsatz eines gewöhnlichen Framesets zu raten
Warum denn? Ich finde gerade solche Fragestellungen, wie Stefan sie hat, ganz interessant und dem Forum sehr angemessen (übrigens durchaus im Gegensatz zu manchen Fragen, die Aqua stellt).
die Probleme sind ohnehin die gleichen wie bei einem Iframe und du weißt, worauf man achten muss.
Ich bin ohnehin bekanntlich kein "Framehasser", aber ich plädiere dennoch dafür, zu überlegen, ob man bei einem solchen Layoutvorhaben nicht doch besser alles mit CSS macht.
Grüße aus Berlin
Christoph S.
Hi Christoph,
[...] aber in Opera 7.11 ist nicht "alles in Ordnung". Da hängt der untere blaue Balken im unsichtbaren Bereich, allerdings ist die ganze Seite scrollfähig.
Opera 7.11 hat Probleme, die Einstellungen von 7.03 zu übernehmen, das Update muss also noch etwas warten.
Tja, bleibt nur, dir den Einsatz eines gewöhnlichen Framesets zu raten
Warum denn? Ich finde gerade solche Fragestellungen, wie Stefan sie hat, ganz interessant und dem Forum sehr angemessen
Ich habe nichts gegenteiliges behauptet.
Ich bin ohnehin bekanntlich kein "Framehasser", aber ich plädiere dennoch dafür, zu überlegen, ob man bei einem solchen Layoutvorhaben nicht doch besser alles mit CSS macht.
Könnte man overflow:scroll in der Praxis gebrauchen, wäre ich auch dafür. Ein position:fixed-Hack wäre auch noch denkbar, Stefan hat damit schließlich einige Erfahrung.
Grüße,
Roland
Hallo Roland,
[ ... Opera-Probleme ... ]
also mein Opera 7.11 zeigt die Sache wie gewünscht an, allerdings
hat er massive Probleme, wenn man das Fenster verkleinert. Um es
anders zu sagen, er hängt sich dann auf und stürzt ab. Der Crash
ist reproduzierbar. Ansonsten danke für Deine detaillierten Be-
schreibungen, ich werde vermutlich zunächst einmal Opera aussen
vor lassen, d.h. da jetzt nicht das ganze Konzept nochmal neu
gestalten, nur damit es in Opera funktioniert. Es geht hier um
eine bestehende Website (zzdd.de) und da sind so wenige Leute
mit Opera unterwegs, dass ich den Mehraufwand ökonomisch nicht
rechtfertigen kann.
Tja, bleibt nur, dir den Einsatz eines gewöhnlichen Framesets zu raten
Ich habe keine Möglichkeit gefunden, framefrei zu arbeiten, was
ich sehr bedauere. Zumindest konnte ich mich auf den Iframe in
der Mitte beschränken.
Könnte man overflow:scroll in der Praxis gebrauchen, wäre ich auch dafür. Ein position:fixed-Hack wäre auch noch denkbar, Stefan hat damit schließlich einige Erfahrung.
Aufgrund der Anforderungen hier (unten und oben eine feststehende
Navigation, da wo jetzt die blauen Kästen sind), habe ich dafür
kein praktikable Möglichkeit gefunden, die auch im MSIE klappt.
Viele Grüße,
Stefan
Hallo Stefan,
Schwierig wird es im MSIE 6.0 SP1, der zeigt mir mit DOCTYPE die
mittlere Zelle mit der Höhe der Seite und nicht der restlichen
Höhe innerhalb der Tabelle an. Wenn ich den DOCTYPE rausnehme,
dann zeigt er es korrekt an.
Ich habe zwar keine Lösung für Dein Problem (die hast Du ja mittlerweile selbst gefunden), aber ich versuch's mal mit einer Erklärung der unterschiedlichen Verhaltensweisen, so wie ich sie verstehe.
Da sich mit Deiner DTD ja alle von Dir genannten Browser im standards-compliant Mode befinden, scheint irgendjemand die CSS-Recommendation mißverstanden zu haben. Also habe ich mich mal auf die Suche begeben, ob es eine Stelle beim W3C gibt, die Dein Problem regelt. Ich bin zu dem Schluß gekommen, daß es nichts mißzuverstehen gibt, weil es einfach nicht geregelt ist:
http://www.w3.org/TR/REC-CSS2/tables.html#height-layout
"CSS2 does not specify rendering when the specified table height differs from the content height"
"CSS2 does not define what percentage values of 'height' refer to when specified for table cells."
Wie der IE nun das Nichtvorhandensein einer Regelung umsetzt, kann man in meinen Augen nur als "bescheuert" bezeichnen, zumal er es im Quirks-Mode ja den anderen Browsern entsprechend umsetzt.
Absolut nicht mehr nachvollziehbar wird es, wenn man für Deine mittlere Tabellenzelle die Prozentangabe wegläßt. Dann kommt für diese Zelle ja der Default-Wert "auto" zu tragen.
Mozilla und Opera verhalten sich so, wie man es wohl auch mit gesundem Menschenverstand interpretieren würde: 100px oben, 100px unten, der Rest in der Mitte wird so hoch, daß die 100% der Tabellen-Höhe ausgefüllt werden.
Der IE dehnt nun die Zellen oben und unten, so daß sie größer als die festgelegten 100px werden, die mittlere Zelle wird auch etwas über die Mindestgröße gedehnt. Der IE verstößt damit zwar gegen keine Spezifikation (s.o.: "does not specify"), aber logisch ist es nicht...
Viele Grüße
Carsten
Hallo Carsten,
Absolut nicht mehr nachvollziehbar wird es, wenn man für Deine mittlere Tabellenzelle die Prozentangabe wegläßt. Dann kommt für diese Zelle ja der Default-Wert "auto" zu tragen.
stimmt, genau hier verstehe ich das Verhalten des MSIE in keinster
Weise. Es mag sein, dass der Browser Prozentangaben für die Höhe
einer Tabelle handhaben kann, wie er möchte, aber 100px sind nun
mal 100px und da kann er nicht einfach die oberste und unterste
Zelle größer machen, nur weil ihm gerade mal so ist.
Naja, so langsam finde ich den MSIE immer toller :-(
Viele Grüße,
Stefan