Ошибки обработчика событий onError при загрузке изображений.
Необходимо предзагрузить изображения для галереи.
Делаю это стандартным способом. totalRis=10;var imge=new Array();var tekct=new Array(); function start(){ tekct[1]='Деньги...деньжищи...денюшшки...'; imge[1]= new Image(); imge[1].src='http://avtorpc.narod.ru/foto_gallery/00007251.jpg'; imge[1].onLoad= statusris(1);imge[1].onError=er(1); tekct[2]='Заплати - спи споконо!'; imge[2]= new Image(); imge[2].src='http://avtorpc.narod.ru/foto_gallery/00007255.jpg'; imge[2].onLoad= statusris(2);imge[2].onError=er(2); } function er(nomer){ alert("Картинка "+nomer+" не загружена"); } <body onLoad=start()> При добавление imge[i].onError=er(nomer); происходит следующие 1. Загрузка изображений прерывается 2. Начинает обрабатываться событие onError 3. Событие onLoad не наступает. 4. Если не вставлять обработчик событий на ошибку загрузки картинок все отрабатывает нормально. Для полноты картины хочу добавить что часть скрипта(масив картинок и описаний к нему) генерирую на PHP. Кто подскажет почему срабатывает обработчик ошибок? |
totalRis=10;var imge=new Array();var tekct=new Array(); function start(){ tekct[1]='Деньги...деньжищи...денюшшки...'; imge[1]= new Image(); imge[1].src='http://avtorpc.narod.ru/foto_gallery/00007251.jpg'; imge[1].onload = function() { statusris(1); } imge[1].onerror = function() { er(1); } tekct[2]='Заплати - спи споконо!'; imge[2]= new Image(); imge[2].src='http://avtorpc.narod.ru/foto_gallery/00007255.jpg'; imge[2].onload= function() { statusris(2); } imge[2].onerror= function() { er(2); } } function er(nomer){ alert("Картинка "+nomer+" не загружена"); } Советую прочитать статью про обработчики событий: http://javascript.ru/start/events/intro |
Статью прочитал. Замечательная статья, Но ответа на свою проблему не нашел. Почему одновременно срабатывают два обработчика событий и onload И onerror?
|
Цитата:
|
Медленно)))) Но доходит...Пасибо тебе! Остался один вопрос - если при моей ошибке возвращается значение undefined то почему функции работают? По идее они вообще не должны активироваться...
|
Когда вы описываете обработчик вот так:
element.onclick = somefunction(); То в момент объявления вызывается функция somefunction и обработчику присваивается лишь её результат, а не сама функция. В данном случае верное присвоение: element.onclick = somefunction; Но таким способом невозможно передать параметр. Поэтому, используется замыкание для вызова нужной функции с параметрами: element.onclick = function() { somefunction(1); } |
последовательность строк в коде
У меня такая последовательность как в ваших кодах, не работает. Просмотрел несколько примеров в инете, там работающаяу меня последовательность такая:
imge[1]= new Image(); imge[1].onload = function() { statusris(1); } imge[1].onerror = function() { er(1); } imge[1].src='http://avtorpc.narod.ru/foto_gallery/00007251.jpg'; |
Часовой пояс GMT +3, время: 14:02. |