IE läd nicht alle Bilder von «td background="..."»
Philipp B
- html
Hallo!
Ich habe folgendes Problem:
eine Tabelle in einem Navigationsframe besteht im wesentlichen
aus einem Hintergrundbild, welches in jedem <td>-tag einzeln als Hintergrund für die einzelne Zelle definiert ist.
Darüber liegen gifs als Knöpfe. (Der eigntl. Zelleninhalt.
Von den (ca. 6) Hintergrund-gifs schafft es der Explorer gerade mal, die Hälfte anzuzeigen, den Rest vergisst er.
Dabei ist es jedesmal dieselbe gif-Datei, also ist sie schon geladen,
es sind auch immer andere Bilder die vergessen werden, deshalb liegts nicht am HTML an sich.
Wenn man nun eines der Link-gifs anklickt, dann wird der Hintergrund
um dieses Bild herum auf einmal richtig angezeigt, deshalb vermute ich eine Lösung mit focus() oder ähnlich, da beim Klicken des Links dieser ja wohl so etwas wie einen focus bekommt.
Man müsste sozusagen alle Link-gifs einmal 'virtuell' per JS anklicken (ohne 'Link-Wirkung'), aber document.anchors bietet anscheinend eher wenig Möglichkeiten.
Es handelt sich NICHT um teilw. transparente gifs, bei denen das Hintergrundbild nicht durch die Transparenz zu sehen ist, sondern um
Bereiche, die von keinem gif verdeckt sind, und trotzdem nicht das bg-Bild zeigen.
für Hilfe wäre ich (mal wieder) dankbar ...
Philipp
Hi !
Ein Fetzen Quellcode oder eine URL wären in diesem Fall glaube ich sehr hilfreich ...
CYa,
Harry
Hi !
Ein Fetzen Quellcode oder eine URL wären in diesem Fall glaube ich sehr hilfreich ...
CYa,
Harry
Hallo!
Hast Recht, hab mir jetzt aber schon einen Workaround gebastelt.
Fürs Archiv nochmal eine Beschreibung des auftretenden Problems
mit Lösung:
<table>
<td background="pics/nbl.gif"><img ...></td>
<td background="pics/nbp.gif">
<img src="pics/navst.gif" width="91" height="42">
</td>
<td background="pics/nbp.gif">
<img src="pics/navwi.gif" width="103" height="42">
</td>
<td background="pics/nbp.gif">
<img src="pics/navko.gif" width="71" height="42">
</td>
<td background="pics/nbp.gif">
<img src="pics/navls.gif" width="112" height="42">
</td>
<td background="pics/nbp.gif">
<img src="pics/navlp.gif" width="135" height="42">
</td>
</tr>
</table>
Eine Tabelle mit Gif-Bildern (Quellcode verkürzt).
Im Original sind die Bilder noch als Links definiert, ist hier aber unwichig. Beim Explorer gibt es jetzt nen merkwürdigen Bug:
In jedem Element (ausser dem ersten im Bsp.) ist dieselbe "pics/nbp" als Background angegeben.
Normalerweise müßten alle Elemente diesen Hintergrund zeigen, sobald die Datei einmal geladen ist. Beim IE nicht unbedingt: Der vergißt wohl ab und zu die Hälfte der Hintergrunde zu zeichnen.
Dabei weiß er schon, daß dort der Hintergrund definiert ist:
Man muß nur einmal ein anderes Fenster über die Tabelle legen und wieder wegschieben, sodaß der IE die Stelle neu zeichnen muß, dann ist alles in Ordnung.
Vorläufiger Workaround:
wenn man jedem td-Tag mit <td id="id" ...> o.ä. eine eigene id
gibt, und dann in Javascript
document.all.id.style.backgroundImage = "url(pics/nbp.gif)";
ausführt, NACHDEM die Bild-Datei geladen wurde, zeichnet der IE den Hintergund ebenfalls neu (bzw. zum ersten Mal :-)).
Da ich wenig Lust hatte mich mit dem Timing von Bild-geladen-events
auseinanderzusetzen, und es sich nur um diese wenigen Bilder handelt, wo der bug auftritt, sieht man der 'Lösung' noch etweas billig aus:
var counter = 20;
function Fokus()
{
if ( document.all && (counter>0) )
{ counter--;
document.all.ida.style.backgroundImage = "url(pics/nbp.gif)";
document.all.idb.style.backgroundImage = "url(pics/nbp.gif)";
document.all.idc.style.backgroundImage = "url(pics/nbp.gif)";
document.all.idd.style.backgroundImage = "url(pics/nbp.gif)";
document.all.ide.style.backgroundImage = "url(pics/nbp.gif)";
setTimeout("Fokus()",5000);
}
}
den <td>'s habe ich die id's 'ida' bis 'ide' gegeben
, die Funktion Fokus() muß einmal im body aufgerufen werden und
teilt dem Explorer alle 5 Sekunden mit, wie die Hintergründe heissen, und das eine Minute lang (wenn ich mich nicht verrechnet habe). Wenn man davon ausgeht, daß die entspr. Grafik nach einer Minute geladen ist, sollte es klappen.
Philipp