Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.07.2013, 22:06
Аватар для VINRARUS
Аспирант
Отправить личное сообщение для VINRARUS Посмотреть профиль Найти все сообщения от VINRARUS
 
Регистрация: 01.07.2013
Сообщений: 36

Подгрузка изображений по очереди
Есть типо медленный конект, есть тяжелые изображения. При загрузке страницы (галерея) отображаются 12 изображений, но при одновременной загрузке 12 изображений сразу очень неудобно ждать, особенно когда нужны только первые.
По этому нужно как то сначала до конца загрузить картинку №1, потом приступить к загрузке картинки №2, и т.д., то есть по очереди.

Пользуясь поиском нашел такое решение: http://web.izjum.com/js-image-preload
Только вот у меня после загрузки 1й картинки страница очищается и видно только 2ю картинку на белом фоне (код страницы содержит только тег 2й картинки).
Поправьте, может я не верно реализовал?

Данный код втавлен в место отображения каждой картинки.
<script>var KARTINKO = "<img src='/root$DIDKA$FIL' alt='' width='600' height='800' >";
  var preloadedImg = new Image(); 
  preloadedImg.src = "$prevKARTINKO"; 
  var myImageHandler = function() { 
  document.write(KARTINKO);
  } 
  if(preloadedImg.complete) { 
    myImageHandler(); 
  } else { 
    preloadedImg.onload = myImageHandler; 
} 
</script>

Текущая картинка: /root$DIDKA$FIL
Предыдущая картинка: $prevKARTINKO
Ответить с цитированием
  #2 (permalink)  
Старый 31.07.2013, 00:01
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от VINRARUS
document.write
document.body.innerHTML+=KARTINKO;
Ответить с цитированием
  #3 (permalink)  
Старый 31.07.2013, 03:49
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

<div id="imagesAll"></div>


var images = ['img1.png', 'myImg.jpg', 'images.gif']; //Ссылки к изображениям
var turn = 0;

function imgLoad() {
   if(!images[turn]) return;
   var a = new Image();
   a.alt = '';
   a.src = images[turn];
   turn++;
   a.onload = function() {
      document.getElementById('imagesAll').appendChild(a);
   }
}

imgLoad();
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2013, 00:00
Аватар для VINRARUS
Аспирант
Отправить личное сообщение для VINRARUS Посмотреть профиль Найти все сообщения от VINRARUS
 
Регистрация: 01.07.2013
Сообщений: 36

dmitriymar, спасибо за подсказку.
Ruslan_xDD, как то не заработал этот код, но я взял кое что полезное из него.

4 дня усилий принесли результаты.
Вот то о чем я мечтал:
<script>
var NUM = "1";
var NOM = "0";
var IMG = ['http://vinrarus.ucoz.net/D.gif', 'http://vinrarus.ucoz.net/D1.png', 'http://vinrarus.ucoz.net/D2.png', 'http://vinrarus.ucoz.net/D3.png', 'http://vinrarus.ucoz.net/D4.png', 'http://vinrarus.ucoz.net/D5.png']; //Ссылки к изображениям

function interval() {
var NOM = NUM;
var OMG = IMG[NOM];
if (OMG==undefined)
{
clearInterval(intervalID);
}
	 var preloadedImg = new Image();
	 preloadedImg.src = OMG;
	 if (preloadedImg.complete) {
	 var DIVI = 'IMG-'+NUM;
	 document.getElementById(DIVI).innerHTML = "<img src='"+IMG[NUM]+"' alt='' width='50' height='50' >";
	var NOM = NUM;
	NUM++;
	 }
}
//bu VINRARUS 2013
var intervalID=setInterval(interval,100);	//интервал
</script>


Представим что 1 картинка весит 2 мб...<br>
<img border="0" align="absmiddle" src="http://vinrarus.ucoz.net/D.gif" alt='' width='100' height='100' >
<span id='IMG-1'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-2'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-3'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-4'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-5'><img src='' alt='Loading...' width='50' height='50' ></span >

Единственный минус - не работает на IE (как всегда).
Может кто в курсе как на IE завести (по ссылке в 1м сообщении чего то не вышло)?

ПС: Firefox таки шустрее работает с тяжелым кодом\данными чем хром и "старая" опера.

Последний раз редактировалось VINRARUS, 03.08.2013 в 16:51. Причина: Кнопочку добавил ^_^
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2013, 04:51
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

VINRARUS, упс, я кое что упустил, вот:
var images = ['img1.png', 'myImg.jpg', 'images.gif']; //Ссылки к изображениям
var turn = 0;

function imgLoad() {
   if(!images[turn]) return;
   var a = new Image();
   a.alt = '';
   a.src = images[turn];
   turn++;
   a.onload = function() {
      document.getElementById('imagesAll').appendChild(a);
      imgLoad();
   }
}

imgLoad();
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2013, 18:54
Аватар для VINRARUS
Аспирант
Отправить личное сообщение для VINRARUS Посмотреть профиль Найти все сообщения от VINRARUS
 
Регистрация: 01.07.2013
Сообщений: 36

Сообщение от Ruslan_xDD
упс, я кое что упустил, вот:
Спасибо, теперь код мечты выглядит так:
<script>
var NUM = "1";
var IMG = ['http://vinrarus.ucoz.net/D.gif', 'http://vinrarus.ucoz.net/D1.png', 'http://vinrarus.ucoz.net/D2.png', 'http://vinrarus.ucoz.net/D3.png', 'http://vinrarus.ucoz.net/D4.png', 'http://vinrarus.ucoz.net/D5.png']; //Ссылки к изображениям
function LOAD() {
var OMG = IMG[NUM];
	 var preloadedImg = new Image();
	 preloadedImg.alt = '';
     preloadedImg.src = OMG;
   preloadedImg.onload = function() {
	 var DIVI = 'IMG-'+NUM;
	 document.getElementById(DIVI).innerHTML = "<img src='"+IMG[NUM]+"' alt='' width='50' height='50'>";
	 NUM++;
	 setTimeout(LOAD,100);
	 }
}
setTimeout(LOAD,100);

</script>
<span id='IMG-1'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-2'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-3'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-4'><img src='' alt='Loading...' width='50' height='50' ></span >
<span id='IMG-5'><img src='' alt='Loading...' width='50' height='50' ></span >

А задержка нужна по 2м причинам:
1) просто красиво когда картинки постепенно появляются
2) для браузера легче, появляется время что бы отмаштабировать
Ответить с цитированием
  #7 (permalink)  
Старый 21.08.2016, 21:46
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

Здравствуйте,гуру! За инкриментом-закрепленна ссылка в массиве... Но я уже сделал версию как раз с сеттаймом,но потом я решил сделать по событию готовности ифрейма.У меня,ноут,и я увидел как долго грузиться на телефоне:cекудды тикают,а контент не виден...Так что нужно - по факту..
Переделал код под себя,исходя из своих представлений о цикле, взяв за основу сделанное тут товарищами по отношению к картинкам. Так вот, осталось самую малость-переделать под ифреймы..Вот этот проблемный курсив...а мне надо -ифрейм!Я уже всякое new подставлял-не работает з.


javascript:
// ПОМОГИТЕ ПОЖАЙЛУСТА СДЕЛАТЬ ТАКУЮ ПРЕДЗАГРУЗКУ ДЛЯ ИФРЕЙМА, УВАЖАЕМЫЕ ГУРУ!
var preloadedImg = document.createElement('iframe');
gotov= preloadedImg.src = 'google.com';
var x=0;

while (x<3){
x++;
var gg= function() {
document.body.innerHTML+='<iframe src="'+gotov+'"</iframe>';
alert(gotov)} ;
if(preloadedImg.complete) {
gg()
};
};
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту

Последний раз редактировалось Андрей38, 21.08.2016 в 21:49.
Ответить с цитированием
  #8 (permalink)  
Старый 21.08.2016, 21:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Андрей38,
не засоряйте форум.
Ответить с цитированием
  #9 (permalink)  
Старый 21.08.2016, 22:07
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

рони,
Я не знаю как искать свои оставленные сообщения
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту
Ответить с цитированием
  #10 (permalink)  
Старый 21.08.2016, 22:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Андрей38,
http://javascript.ru/forum/search.ph...nduser&u=10645
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Философский вопрос - подгрузка изображений crime Элементы интерфейса 1 14.12.2012 09:19
Постепенная подгрузка изображений malkoff jQuery 2 16.10.2011 14:57
Повременная смена изображений jozev Элементы интерфейса 2 01.08.2011 18:43
Скролл мини изображений I-Trap Элементы интерфейса 1 25.11.2009 22:03
Подгрузка изображений по клику CompModdd Общие вопросы Javascript 17 30.04.2009 02:39