Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему onload срабатывает до того как картинка полностью проявится? (https://javascript.ru/forum/misc/39284-pochemu-onload-srabatyvaet-do-togo-kak-kartinka-polnostyu-proyavitsya.html)

koeshiro 24.06.2013 08:58

Почему onload срабатывает до того как картинка полностью проявится?
 
Здрасте. Я тут хотел сделать проверку загрузились ли все картинки на странице(Подобное хотел сделать со скриптами и линками но не знаю как =\) но когда проверял в хроме добавил трёхтонные картинки и счётчик который я сделал досчитал до 15(количество картинок) до того как они все были полностью отображены. Не подскажете почему?
x=0;
for(i=0;i<15;i++){document.getElementsByTagName('img')[x].onload=alert(x);x++;}

vadim5june 24.06.2013 09:11

может так
var x=0;
for(i=0;i<15;i++){document.getElementsByTagName('img')[i].onload=function(){alert(x);x++;}}

скрипты поддерживают onload и onerror
var sc=document.createElement('script');
sc.onload=function(){alert('load')};
sc.onerror=function(){alert('error')};
sc.src='tratata.js';
document.head.appendChild(sc);

koeshiro 24.06.2013 09:18

vadim5june,
такая, казалось бы мелоч, но сработало. Просто поставит [i] в замену [x] и картинки отрисоваились сразу после того как счёт закончился. :victory:

koeshiro 24.06.2013 09:24

Цитата:

Сообщение от vadim5june (Сообщение 258090)
может так
var x=0;
for(i=0;i<15;i++){document.getElementsByTagName('img')[i].onload=function(){alert(x);x++;}}

скрипты поддерживают onload и onerror
var sc=document.createElement('script');
sc.onload=function(){alert('load')};
sc.onerror=function(){alert('error')};
sc.src='tratata.js';
document.head.appendChild(sc);

То есть придётся создавать все скрипты на странице отдельно чтоб узнать готовы ли они или нет?

vadim5june 24.06.2013 09:28

Цитата:

Сообщение от koeshiro
То есть придётся создавать все скрипты на странице отдельно чтоб узнать готовы ли они или нет?

не обязательно можно и к уже созданным применить
можно так писать
<script src='1.js' onload='f(this)' onerror='er(this)'></script>
<script>function f(t){alert(t.src+'-loaded')}</script>

koeshiro 24.06.2013 09:31

Цитата:

Сообщение от vadim5june (Сообщение 258093)
не обязательно можно и к уже созданным применить

И как же это? Разве <script> поддерживает имя или классы? Быть может id?

koeshiro 24.06.2013 09:34

Цитата:

Сообщение от vadim5june (Сообщение 258093)
не обязательно можно и к уже созданным применить
можно так писать
<script src='1.js' onload=f(this) onerror=er(this)></script>

О понятно. А почему это дело без скобок? :blink:

vadim5june 24.06.2013 09:39

Цитата:

Сообщение от koeshiro
А почему это дело без скобок?

поставил кавычки
о каких скобках речь?

koeshiro 24.06.2013 09:43

Цитата:

Сообщение от vadim5june (Сообщение 258096)
поставил кавычки
о каких скобках речь?

Ну так ож оговарился. . . . .

koeshiro 24.06.2013 09:48

Стоп а с линками тоже самое что ли?


Часовой пояс GMT +3, время: 06:14.