Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 25.10.2008, 23:15
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Kolyaj Посмотреть сообщение
Да, честно говоря, все работает.
Если изображение не добавляется в документ, то Opera не загружает его и onload не срабатывает, а если сразу же добавлять созданный new Image() в документ, то onload в браузерах будет срабатывать только один раз, когда изображения еще нет в кэше. Поэтому тут не тривиальная задача, как организовать еще и возможность работы скрипта при повторном нажатии на ранее загруженное изображение.
Ответить с цитированием
  #12 (permalink)  
Старый 26.10.2008, 07:41
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Octane,
описанную схему я не из теории взял, она у меня прекрасно работает.
Ответить с цитированием
  #13 (permalink)  
Старый 26.10.2008, 16:27
Аспирант
Отправить личное сообщение для EugenyK Посмотреть профиль Найти все сообщения от EugenyK
 
Регистрация: 17.03.2008
Сообщений: 64

dummer,
Нижеизложенный код работает и в FF3.0 и в Opera9.61.
Даже после кеширования изображения onload срабатывает
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>11</title>
	<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
	<meta name="robots" content="noindex, nofollow" />
</head>
<body>
	<img id='img' src='' alt='' style='width: 200px' />
	<a href='' onclick="document.getElementById('img').src='A_000.jpg'; return false;">1</a>
	<a href='' onclick="document.getElementById('img').src='A_002.jpg'; return false;">2</a>
	<a href='' onclick="document.getElementById('img').src='A_004.jpg'; return false;">4</a>
	<a href='' onclick="document.getElementById('img').src='A_006.jpg'; return false;">6</a>
	<script type='text/javascript'>
		document.getElementById('img').onload = function(){
			alert(this.src+' is loaded!')
		}
	</script>
</body>
Ответить с цитированием
  #14 (permalink)  
Старый 21.05.2010, 05:18
Новичок на форуме
Отправить личное сообщение для Levsha Посмотреть профиль Найти все сообщения от Levsha
 
Регистрация: 21.05.2010
Сообщений: 1

EugenyK, вы не правы, специально перепроверил.
Если страница закеширована (то есть если обновлять страницу не через F5, а просто перейдя на нее по ссылке) , то событие onload не срабатывает.

Тут поможет свойство "complete" , объекта <img/>
Это свойство равно true , когда изображение уже загружено в кеш, и false если не загружно. Таким образом ваш код:
<script type='text/javascript'>
document.getElementById('img').onload = function(){
alert(this.src+' is loaded!')
}
</script>

меняем на:
<script type='text/javascript'>
if (document.getElementById('img').complete) {alert(this.src+' is loaded!')}
else document.getElementById('img').onload = function(){
alert(this.src+' is loaded!')
}
</script>
Если используем jQuery, то вполне можно сделать так:
<script type='text/javascript'>
if ($('#doorimg').attr("complete")) {alert(this.src+' is loaded!')}
... и т.д.
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать, что бы изображения пропадали. Dronch Элементы интерфейса 7 28.08.2008 21:55
как при добавлении изображения на сервер считывать имя в БД? solomusic Серверные языки и технологии 3 12.06.2008 23:28
Асинхронная загрузка картинок. Leonid AJAX и COMET 9 13.05.2008 09:33
Пользовательские изображения CyberSorrow Элементы интерфейса 2 23.03.2008 01:14
Визуальное выделение части изображения Гость Общие вопросы Javascript 0 25.02.2008 19:44