Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.07.2020, 12:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Vahan60,
если картинок немного, загрузите их все в строке ноль.
читать preloading images with JavaScript
Ответить с цитированием
  #12 (permalink)  
Старый 07.07.2020, 14:58
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Использовать Promise надо
Определяем функцию, возвращающую Promise, разрешающийся, когда картинка загрузится (ну или ошибка, т.к. мы их все равно не обрабатываем)

const loadimg = (img, src) => {
	return new Promise (res => {
		img.onload = img.onerror = () => res()
		img.src = src
	})
}


Затем ждем, когда все картинки загрузятся и потом показываем диалог
Вместо строк 4-8
Promise.allSetted([...img].map((im, j) => loadimg(im, `cartoons/${inset[activeUnit][j]}.png`)))
   .then(() => dial.show())
Ответить с цитированием
  #13 (permalink)  
Старый 08.07.2020, 09:26
Аспирант
Отправить личное сообщение для Vahan60 Посмотреть профиль Найти все сообщения от Vahan60
 
Регистрация: 20.04.2020
Сообщений: 46

Получилось.

for (let i = 0; i < alphabet.length; i++){
      unit[i].addEventListener("click", function( ) {
	  activeUnit = i;   
      for (let j = 0; j < img.length; j++) {
	  img[j].src = "cartoons/".concat(inset[activeUnit][j].concat(".png"))
          };	  
	   }) 
   };  

for (let i = 0; i < alphabet.length; i++){
      unit[i].addEventListener("click", function( ) {
	     dial.show()  
	   }) 
   };


Всем огромное спасибо!
Ответить с цитированием
  #14 (permalink)  
Старый 08.07.2020, 09:30
Аспирант
Отправить личное сообщение для Vahan60 Посмотреть профиль Найти все сообщения от Vahan60
 
Регистрация: 20.04.2020
Сообщений: 46

Как меня достали эти алерты:

"Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его рони."

"Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его voraa."



Невозможно поблагодарить Консультантов по форумному.

Благодарю по человечески - еще раз огромное спасибо.
Ответить с цитированием
  #15 (permalink)  
Старый 08.07.2020, 12:22
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от Vahan60
Получилось.
Осталось проверить это на более медленном соединении (например, 3G) и очищая кэш браузера.
Не думаю, что это что то дает.
Ответить с цитированием
  #16 (permalink)  
Старый 08.07.2020, 19:27
Аспирант
Отправить личное сообщение для Vahan60 Посмотреть профиль Найти все сообщения от Vahan60
 
Регистрация: 20.04.2020
Сообщений: 46

Кэш очистил. Работает нормально. С 3ж не знаю как быть. В случае чего к строкам 10-12 можно прикрутить setTameOut.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает скрипт при подключении другого скрипта Аслан Events/DOM/Window 0 29.04.2017 02:13
Не работает XMLHttpRequest.upload.onprogress при POST запосах Serduko Javascript под браузер 6 05.10.2016 13:14
не работает слайдер при первой загрузки страницы Nailya jQuery 7 08.09.2016 16:33
DatePicker не работает при сипользование innerHTML AJlekceu jQuery 2 26.10.2008 17:49
insertBefore выдаёт ошибку и не работает на опере и фоксе SunnyDay Общие вопросы Javascript 3 19.09.2008 12:08