Netscape 4/6 und IE4 zusammen mit dynamischen Inhalt per JS
Neo
- dhtml
Folgendes Problem: In einer Schleife erzeuge ich per JavaScript eine Tabelle, 5 Spalten breit, beliebig viele Zeilen hoch. In jede Zelle kommt ein kleines Bild (100x75).
Im Internet Explorer 5 klappt alles prima, im IE 4 nicht, Netscape 4.7 macht keine Scrollbalken mehr, beim Resize werden nur noch Platzhalter angezeigt, und Netscape 6 zeigt gar nichts an.
Hiermit übergebe ich den in der Variable gespeicherten Quellcode dem Browser:
if (document.all)
Microsoft.innerHTML = htmlcode;
if (document.layers) {
document.Netscape.document.write(htmlcode);
document.Netscape.document.close(); }
Im Body-Teil gibts einmal:
<div id="Microsoft"></div>
<layer id="Netscape"></layer>
Was nun? (Ich hab mal den ganzen Quellcode eingefügt, vielleicht liegts wo anders dran)
<script language="JavaScript">
var nAnzahlBilder;
var strOrdnerBilder, strOrdnerMiniaturbilder;
var strPfadViewdatei, strPfadLeerPixel;
// ******************************************
nAnzahlBilder = 57;
strOrdnerBilder = "images/";
strOrdnerMiniaturbilder = "images/miniatur/";
strPfadViewdatei = "view.html";
strPfadLeerPixel = "images/leerpixel.gif";
// ******************************************
function buildlist()
{
// 5 Bilder pro Zeile
// Jede Zeile wird durchlaufen (Schleife 1)
// In jeder Zeile ein Bild (Schleife 2, verschachtelt)
// Nicht vorhandene Bilder (z.B. bei ungeraden Zahlen)
// werden durch ein unsichtbares Bild ersetzt, um die
// Anordnung der Bilder beizubehallten
// Funktioniert auch im Netscape, jedoch nur bedingt
// Wenn die Liste größer als der Bildschirm ist, erscheinen
// keine Skrollbalken, das Anzeigen der großen Bilder klappt trotzdem
// außerdem wird die Liste erst angezeigt, wenn alle Bilder
// geladen sind
// (im Gegensatz zum IE, wo man den Aufbau der Seite beobachten kann
// und sich schon die ersten Bilder angucken kann, während die
// Seite noch geladen wird
var htmlcode;
var nRows;
var i, n, currentImageNumber;
nRows = (nAnzahlBilder + (5 - (nAnzahlBilder % 5))) / 5; // Mathe kann ich noch *g*
htmlcode = "<font size=2>Momentan haben wir " + nAnzahlBilder + " Bilder vom Abitur vorliegen.<br>Vergrößerung nur für Internet Explorer 5.0 und Netscape 4.0 (oder höher) geeignet</font>";
htmlcode += "<table width=530 cellpadding=0 cellspacing=6>";
for (i = 1; i <= nRows; i++)
{
htmlcode += "<tr>"
for (n = 1; n <= 5; n++)
{
currentImageNumber = ((i - 1) * 5) + n;
if (currentImageNumber > nAnzahlBilder)
htmlcode += "<td align=center><img src="" + strPfadLeerPixel + "" border=0 width=100 height=75></td>"; // unsichtbares Bild
else
htmlcode += "<td align=center><a href="" + strPfadViewdatei + "?" + currentImageNumber + ".jpg"><img src="" + strOrdnerMiniaturbilder + currentImageNumber + ".jpg" border=0></a></td>";
}
htmlcode += "</tr>";
}
htmlcode += "</table>";
if (document.all)
Microsoft.innerHTML = htmlcode;
if (document.layers) {
document.Netscape.document.write(htmlcode);
document.Netscape.document.close(); }
}
</script>
<base target="_self">
</head>
<body onLoad="buildlist();">
<div id="Microsoft"></div>
<layer id="Netscape"></layer>