Witam, mam od kilku dni problem ze zdarzeniem OnLoad komponentu Image. Funkcja przypisana do tego zdarzenia działa w Operze, ale w IE6 i FireFoxsie nie chce zadziałać. Wydaje mi się, że te przeglądarki mają jakieś błędy przy obsłudze zdarzenia onload obiektu Image.
Pokaże kod mojego skryptu (galerii). Po kliknięciu na obrazek na stronie, wywoływana jest funkcja PokazObraz ze ścieżką do pliku i opisem obrazka. Przy czym ważna rzecz, powiększony obrazek ma pojawiać się na warstwie a nie w nowym oknie przeglądarki. Problem w tym, że zdarzenie OnLoad uruchamia się we wspomnianych przeglądarkach nie w tym momencie co trzeba (tzn. przed załadowaniem obrazka ;-)
<script type="text/javascript">
var loaded=false;
function PokazObraz(nazwa_pliku)
{
var plik = new Image();
loaded=false;
plik.onload=AfterLoad;
plik.src = nazwa_pliku;
// Niektóre przeglądarki nie wykonują pustych pętli
while (!loaded)
{ loaded=loaded; }
// po tej pętli obrazek powinien być już w całości załadowany, jego dane (takie jak szerokość i wysokość powinny być dostępne) - a w IE6 i FF nie są
loaded=false;
wysw = document.getElementById('podglad');
wysw.src = plik.src;
alert(plik.width); // w Operze wyświetla prawidłową szerokość obrazka, a w innych przeglądarkach 0
}
function AfterLoad()
{ loaded = true; }
</script>
Jak wspomniałem, w Operze wszystko jest OK. Zastepowałem zdarzenie onload funkcją attachEvent() oraz addEventListener() i dalej to samo. Nie widzę już rozwiązania tego problemu. Spotkaliście się może z czymś takim? Bardzo prosiłbym taką osobę o pomoc, ponieważ siedzę już nad tym trzeci dzień ;-)