Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   JavaScript - PRELOAD IMAGE (http://forum.oszone.net/showthread.php?t=31174)

Iskatell 24-05-2004 13:38 213801

В IE есть прекрасные фильтры с разнообразными эфектами вывода картинок.
Но вот проблема - я загружаю картинку посредством заброса кода во фрейм.
(использую parent.NameFrame.document.write('код страницы')
И все бы ничего но когда забрасываешь Код таким образом то событие onLoad не срабатывает! А мне всего то нужно что бы в скрипте подгружалась картинка в КЕШ и что-бы можно быо определить что вот она загрузилась и только тогда запускать какую то функцию! Кто знает как это сделать?

vadimiron 24-05-2004 15:06 213802

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 213803

Что ж доходчивый вариант скрипта с прелоадом, НО!
Дело в том что мне нужно точно знать что картинка уже загружена полностью в переменную и в соответствии с этим запускать функцию!

В любом случаи спасибо! Однако вопрос все еще открыт)

С Уважением Искатель!

vadimiron 25-05-2004 14:03 213804

Iskatell

Посмотри на массив names, насколько я понимаю, это и есть переменная со всеми загружеными картинками, а то что они уже в кеше я тебе 100% даю

В крайнем случае создай ещё переменных, которые будут содержать эти картинки, в любом случае после этой функции картинки будут в кэше, а там уж какая переменная ими управляет, это не так важно

Iskatell 25-05-2004 16:57 213805

Да я все это понимаю но не все так просто.
Как только ты назначаешь какой то графический объект какой то переменной то на сколько я это понимаю - этот объект начинает грузится в память а программа спокойненько продолжает работать дальше. Но ведь картинка может быть большой грузится секунд 20. так вот мне надо определить конец загрузки картинки и только тогда давать программе работать дальше.


vadimiron 26-05-2004 00:08 213806

вообще я не очень понимаю, как ты хочешь загрузить картинку в переменную??? ты можешь переменной передать только адрес где лежит картинка, чтобы потом её вставлять
Зачем вообще нужно картинку какой то переменной передавать???

Пойми функция, которую я написал, она будет идти пока не загрузятся все картинки, то есть если у тебя картинки большие, код, следующий за этой функцией, не будет грузится, пока вся функция не пробежит, я не понимаю, что тебе ещё нужно, то есть, всё, что идёт дальше, будет грузится только когда все картинки загрузятся, поэтому подобные функции и пихают в тэг <head>, чтобы они исполнялись до загрузки сайта
Цитата:

мне надо определить конец загрузки картинки и только тогда давать программе работать дальше
Для этого пиши, всё, что тебе нужно, сразу после того кода, который я тебе дал, потому что код буде уже исполнен, соответственно будут загружены все картинки

Iskatell 01-06-2004 10:48 213807

Дело в том что страница в каторой сменяются картинки сама не перегружается! Смена картинки происходит методом смены свойств обьекта 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);

Возможно я непонятно излагаю. За что и извеняюсь  :)


Время: 18:45.

Время: 18:45.
© OSzone.net 2001-