Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2012, 16:26
Интересующийся
Отправить личное сообщение для land15 Посмотреть профиль Найти все сообщения от land15
 
Регистрация: 01.12.2011
Сообщений: 14

функция imgLoader
функция для подгрузки превьюшек, пока грузится - показывается картинка загрузки, после загрузки - нужное изображение:
function imgLoader (el, blankPic, aimSrc, errorSrc) {
	    var aimPic = new Image(),
		    elt = el;
		
		aimPic.onload = function () {
		    elt.src = aimPic.src;		
		    elt.style.borderLeft = '1px solid red';//отладочная строка
        }
				
		aimPic.onerror = function() {
		    elt.src = errorSrc;
	    }
		
	        aimPic.src = aimSrc;
		    elt.width = imgSize.Width;//эти размеры известны
		    elt.height = imgSize.Height;
	        elt.src = blankPic.src;
}

Везде работает, кроме IE. В нем левый бордер краснеет всегда, а изображение меняется далеко не всегда. Что не так?

Последний раз редактировалось land15, 23.11.2012 в 16:30.
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2012, 13:53
жажду знаний
Отправить личное сообщение для bushstas Посмотреть профиль Найти все сообщения от bushstas
 
Регистрация: 17.07.2009
Сообщений: 202

я использую для этой цели другую конструкцию:
var img=new Image()
img.src="path/pic.jpg"
checkPicLoad(img)

function checkPicLoad(img){
if(img.complete){

//фото загружено, делай действия 

}else{
window.setTimeout(function(){checkPicLoad(img)},200)
// фото еще не загружено, проверь снова через 0.2 сек  

}

}
Ответить с цитированием
  #3 (permalink)  
Старый 31.12.2012, 17:03
Новичок на форуме
Отправить личное сообщение для Дмитрий 87 Посмотреть профиль Найти все сообщения от Дмитрий 87
 
Регистрация: 14.12.2012
Сообщений: 7

Сообщение от bushstas Посмотреть сообщение
я использую для этой цели другую конструкцию:
var img=new Image()
img.src="path/pic.jpg"
checkPicLoad(img)

function checkPicLoad(img){
if(img.complete){

//фото загружено, делай действия 

}else{
window.setTimeout(function(){checkPicLoad(img)},200)
// фото еще не загружено, проверь снова через 0.2 сек  

}

}
А если такой картинки не существует? Подвисон?
Ответить с цитированием
  #4 (permalink)  
Старый 31.12.2012, 17:33
Новичок на форуме
Отправить личное сообщение для Дмитрий 87 Посмотреть профиль Найти все сообщения от Дмитрий 87
 
Регистрация: 14.12.2012
Сообщений: 7

И попутный вопрос по теме)
Чем отличаются записи:
ShowImg.onload= function(){alert("The Image is not loaded! Sorry...")}

И:
ShowImg.onload= alert("The Image is not loaded! Sorry...")


Вот сам скрипт смены изображений:
var ImgArr= document.getElementById("preload").getElementsByTagName("img")
	var ShowImg= document.getElementById("mainimg")
	var CurImg= 0
	function nextimg(){
		if (CurImg<ImgArr.length-1){
			CurImg+= 1
			ShowImg.src= ImgArr[CurImg].src}
		else{
			CurImg= 0
			ShowImg.src= ImgArr[CurImg].src}
	}
	function prewimg(){
		if (CurImg !== 0){
			CurImg-= 1
			ShowImg.src= ImgArr[CurImg].src}
		else{
			CurImg= ImgArr.length-1
			ShowImg.src= ImgArr[CurImg].src}
	}
	function blockkeydown(event){
		if (event.keyCode== 37){nextimg()}
		if (event.keyCode== 39){prewimg()}
	}
	function load(){
		ShowImg.src= ImgArr[CurImg].src
	}
	ShowImg.onerror= function(){alert("The image is not loaded! Sorry...")}
	document.onload= load()


Если убрать function(){...} то сразу при загрузке страницы алерт! Если в таком виде, то всё вроде норм (грузится изображение, если его нет то алерт).
А вот если событие ОНЕРРОР поместить в функцию (например function prewimg()) то там такие чудеса творятся!
Допустим поставить событие ОНЛОАД куда-нибудь в функцию function nextimg(). По наблюдениям после ОНЛОАД код пойдёт выполняться дальше, функция завершится и событие онлоад попросту не случится!
На сайте даже есть пример:
http://learn.javascript.ru/play/tuto...oad/index.html

Взятый из статьи:
http://learn.javascript.ru/onload-onerror

Перейдите туда и уберите ДЕМО СЧЁТЧИК (
setTimeout(replaceImg, 1000); // задержка на 1 сек для демонстрации

)! Функция не выполнится!
Спрашивается, как по человечески реализовать функцию проверки изображений?

Последний раз редактировалось Дмитрий 87, 31.12.2012 в 17:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать какая функция вызывается в браузере при наведении мыши? Бобр Элементы интерфейса 6 01.10.2012 04:01
функция и несуществующий id Ankh Элементы интерфейса 4 10.02.2012 23:49
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 19:00
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47
Функция меняющая значение input type text. Value не подходит( Sundog Общие вопросы Javascript 1 25.09.2009 15:06