Показать полную графическую версию : JavaScript - PRELOAD IMAGE
Iskatell
24-05-2004, 13:38
В IE есть прекрасные фильтры с разнообразными эфектами вывода картинок.
Но вот проблема - я загружаю картинку посредством заброса кода во фрейм.
(использую parent.NameFrame.document.write('код страницы')
И все бы ничего но когда забрасываешь Код таким образом то событие onLoad не срабатывает! А мне всего то нужно что бы в скрипте подгружалась картинка в КЕШ и что-бы можно быо определить что вот она загрузилась и только тогда запускать какую то функцию! Кто знает как это сделать?
vadimiron
24-05-2004, 15:06
1 вариант: поискать по форуму, так как эта тема много раз обсуждалась :)
2 вариант: лови код
<html>
<head>
<script language="JavaScript">
names = new Array ("1.gif","2.gif");
Создаём массив и записываем в него список всех картинок, которые мы будем использовать.
tmp = new Array ();
Создаём ещё один, временный массив.
for (i in names) {
Пробегаем все элементы массива.
tmp[i] = new Image();
tmp[i].src = names[i];
Загружаем наши картинки.
}
</script>
</head>
<body>
<img src="1.gif" onMouseOver="src='2.gif'" onMouseOut="src='1.gif'">
Создаём картинку и говорим, что при наведении на неё мышки (onMouseOver) будет меняться картинка, а при отведении (onMouseOut) будет возвращена старая картинка.
</body>
</html>
Будут ещё вопросы, пиши, по моему опыту, данный вариант самый удачный
Iskatell
25-05-2004, 12:12
Что ж доходчивый вариант скрипта с прелоадом, НО!
Дело в том что мне нужно точно знать что картинка уже загружена полностью в переменную и в соответствии с этим запускать функцию!
В любом случаи спасибо! Однако вопрос все еще открыт)
С Уважением Искатель!
vadimiron
25-05-2004, 14:03
Iskatell
Посмотри на массив names, насколько я понимаю, это и есть переменная со всеми загружеными картинками, а то что они уже в кеше я тебе 100% даю
В крайнем случае создай ещё переменных, которые будут содержать эти картинки, в любом случае после этой функции картинки будут в кэше, а там уж какая переменная ими управляет, это не так важно
Iskatell
25-05-2004, 16:57
Да я все это понимаю но не все так просто.
Как только ты назначаешь какой то графический объект какой то переменной то на сколько я это понимаю - этот объект начинает грузится в память а программа спокойненько продолжает работать дальше. Но ведь картинка может быть большой грузится секунд 20. так вот мне надо определить конец загрузки картинки и только тогда давать программе работать дальше.
vadimiron
26-05-2004, 00:08
вообще я не очень понимаю, как ты хочешь загрузить картинку в переменную??? ты можешь переменной передать только адрес где лежит картинка, чтобы потом её вставлять
Зачем вообще нужно картинку какой то переменной передавать???
Пойми функция, которую я написал, она будет идти пока не загрузятся все картинки, то есть если у тебя картинки большие, код, следующий за этой функцией, не будет грузится, пока вся функция не пробежит, я не понимаю, что тебе ещё нужно, то есть, всё, что идёт дальше, будет грузится только когда все картинки загрузятся, поэтому подобные функции и пихают в тэг <head>, чтобы они исполнялись до загрузки сайта
мне надо определить конец загрузки картинки и только тогда давать программе работать дальше
Для этого пиши, всё, что тебе нужно, сразу после того кода, который я тебе дал, потому что код буде уже исполнен, соответственно будут загружены все картинки
Iskatell
01-06-2004, 10:48
Дело в том что страница в каторой сменяются картинки сама не перегружается! Смена картинки происходит методом смены свойств обьекта IMAGES:
parent.fview.document.images['photo'].src = 'pic.jpg'
Как видно присвоение происходит из другого фрейма.
В этом же фрейме (назовем его коммандным) И должен происходить PRELOAD картинки. Какой имено за ранее не известно!
Получается вот что:
tmp = new Image(); //формируется переменная
tmp.src = 'pic.jpg' // в нее заносится имя картинки
/* вот в этом месте мне нужно проверку того что картинка полностью загружена с сервера в КЕШ!!!!!!!!!!!!!!!!!!!!!*/
/*иначе так и недождавшись окончания загрузки картинки в КЕШ происходит ее вставка в еще не загруженом состоянии!*/
parent.fview.document.images['photo'].src = 'pic.jpg'
parent.fview.doTrans(effekt);
Возможно я непонятно излагаю. За что и извеняюсь :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.