2014-10-27 2 views
0

Я пытаюсь использоватьКак гарантировать загрузку изображения до запуска моего JavaScript?

img.onload = function() 
         { ... } 

, чтобы гарантировать, что изображение полностью загружен, чтобы продолжить мои шаги. Этот метод не работает для меня, потому что мне нужно загрузить другое изображение после загрузки первого (у меня есть массив изображений, которые нужно загружать один за другим с определенным временным интервалом).

Есть ли альтернатива (возможно, jQuery), чтобы гарантировать, что изображение было загружено?

+0

Какова ваша цель? Вы пытаетесь сделать предварительный загрузчик? – Nick

+0

как насчет '.ready()'? http://api.jquery.com/ready/ – Aaroniker

+0

@Nick Да, у меня есть предварительная загрузка. Вы можете увидеть страницу [здесь] (http://brain.netii.net/practice_asso.html). –

ответ

0

from jquery documentation: load Событие отправляется элементу, когда он и все подэлементы были полностью загружены. Это событие может быть отправлено любому элементу, связанному с URL: изображениями, сценариями, фреймами, iframe и объектом window.

, чтобы вы могли создать оболочку DIV вокруг изображения, а затем сделать это так:

$("#imageWrap").load(function() { 
    // next steps go here 
}); 

--- редактировать ---

поскольку событие загрузки может не сработать правильно, я наткнулся на это: JavaScript: Know when an image is fully loaded

$.fn.imageLoad = function(fn){ 
    this.load(fn); 
    this.each(function() { 
     if (this.complete && this.naturalWidth !== 0) { 
      $(this).trigger('load'); 
     } 
    }); 
} 

будет лучшим решением!

+0

Спасибо за ваш ответ. Я попытался реализовать этот путь, но у меня проблема. Все работает отлично для первой итерации, однако, после того, как я отправлю форму, она пойдет не так. Если это не так уж сложно, посмотрите на реализацию: http://brain.netii.net/tempPractice.html? –

+0

sry - моя ошибка, я просто скопировал соответствующую часть, но не полное решение ... но хорошо ... я не хочу красть решения ... так что, пожалуйста, перейдите к связанной теме stackoverflow и прочитайте сами , $ .fn. Объявление функции - это объявление прототипа jQuery - и если моя консоль показывает это правильно, вы просто вставили его в свой существующий код. это не сработает! – errand

0

Это можно сделать с помощью плагина jquery под названием imagesLoaded. Вы можете использовать его так:

for(var i = 0 ; i < img_array.length ; i++) { 
    imagesLoaded(img_array[i], function(){ 
     // Stuff to do after the image is loaded 
    }); 
} 
Смежные вопросы