Я создал приложение JavaScript, которое требует предварительной загрузки всех изображений. В Firefox все работает нормально, но в Internet Explorer мой цикл пропускает счет в 19 и идет в 21. Кто-нибудь сталкивался с этой проблемой раньше и с чем это связано?
Вы можете скопировать и вставить приведенный ниже скрипт для тестирования.
var preLoad = function () { var docImages = ["http://www.sanatural.co.za/media/images/map/rsa_prov.gif", "http://www.sanatural.co.za/media/images/map/loading.gif", "http://www.sanatural.co.za/media/images/map/loading2.gif", "http://www.sanatural.co.za/media/images/map/ec_land.gif", "http://www.sanatural.co.za/media/images/map/ec_roll.gif", "http://www.sanatural.co.za/media/images/map/ec_state.gif", "http://www.sanatural.co.za/media/images/map/fs_land.gif", "http://www.sanatural.co.za/media/images/map/fs_roll.gif", "http://www.sanatural.co.za/media/images/map/fs_state.gif", "http://www.sanatural.co.za/media/images/map/gt_land.gif", "http://www.sanatural.co.za/media/images/map/gt_roll.gif", "http://www.sanatural.co.za/media/images/map/gt_state.gif", "http://www.sanatural.co.za/media/images/map/kzn_land.gif", "http://www.sanatural.co.za/media/images/map/kzn_roll.gif", "http://www.sanatural.co.za/media/images/map/kzn_state.gif", "http://www.sanatural.co.za/media/images/map/lp_land.gif", "http://www.sanatural.co.za/media/images/map/lp_roll.gif", "http://www.sanatural.co.za/media/images/map/lp_state.gif", "http://www.sanatural.co.za/media/images/map/mp_land.gif", "http://www.sanatural.co.za/media/images/map/mp_roll.gif", "mp_state.gif", "http://www.sanatural.co.za/media/images/map/nc_land.gif", "http://www.sanatural.co.za/media/images/map/nc_roll.gif", "http://www.sanatural.co.za/media/images/map/nc_state.gif", "http://www.sanatural.co.za/media/images/map/nw_land.gif", "http://www.sanatural.co.za/media/images/map/nw_roll.gif", "http://www.sanatural.co.za/media/images/map/nw_state.gif", "http://www.sanatural.co.za/media/images/map/wc_land.gif", "http://www.sanatural.co.za/media/images/map/wc_roll.gif", "http://www.sanatural.co.za/media/images/map/wc_state.gif"], imageFolder = [], loaded = [], loadedCounter = 0; this.loadImgs = function () { for (var i = 0; i < docImages.length; i++) { imageFolder[i] = new Image(); imageFolder[i].src = docImages[i]; loaded[i] = false; } intervalId = setInterval(loadedCheck, 10); // }; function loadedCheck() { if (loadedCounter == imageFolder.length) { // all images have been preloaded clearInterval(intervalId); alert('All images have been preloaded!'); return; } for (var i = 0; i < imageFolder.length; i++) { if (loaded[i] === false && imageFolder[i].complete) { loaded[i] = true; loadedCounter++; alert(i); // (work fine in FF but i.e goes from 19 to 21 ) } } } }; var preloadObject = new preLoad(); preloadObject.loadImgs();
Причина этого в том, что элемент индекса 20 равен "mp_state.gif" - в нем отсутствует полный URL-адрес.Из-за этого изображение не загружается, для свойства .complete установлено значение false, поэтому цикл пропускает этот элемент.
"mp_state.gif"
.complete