Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: preload image

Сообщения:  [1-10]   [11-12] 

 
 автор: SHAman   (24.11.2006 в 18:53)   письмо автору
 
   для: RMW   (24.11.2006 в 18:35)
 

А что значит пост "..."???

Решение нашлось. Подсказал человечек. Вот код:


<script>d=document;closepic=function(){alert(0);}
pic=new Image();  //onload нет надобности задавать, признак !pic.width||!pic.height хорошо работает
function bigpic(newsrc, title)    {
  var div1 = d.getElementById('d1');
  if(newsrc)pic.src=newsrc;    //загрузка картинки или продолжение после ожидания
  if(!pic.width||!pic.height){setTimeout('bigpic(0,"'+title+'");',10);return;}

  var picw, pich;    //инициация переменных высоты и ширины большой картинки
  picw=pic.width;pich=pic.height;
  var bod=d.body;   //var x = d.getElementById('close');
  var win_x=bod.clientWidth;
  var win_y=bod.scrollTop;
  div1.style.width=picw;div1.style.height=pich;
  var divc=div1.innerHTML;
  var newtext='<span id=close onclick="closepic();" style="float: right;">[X]</span><div id=bigpic_tit>'+title+'</div><img src='+newsrc+' id=pic1><br>'+pic.width+' '+pich;
  div1.innerHTML=newtext;   /*if (x)    {x.style.width=picw;}*/
  div1.style.left=(win_x/2-picw/2);
  div1.style.top=(win_y+bod.clientHeight/2-pich/2);
}</script>
<body><a href=# onclick=bigpic('snow.gif','snowwww');return!1>показать картинку</a><br><div id=d1 style="position:absolute;border:1px solid #999">222</div>


А работающий код здесь:
http://anime.insyss.ru/galery/

Всем спасибо за помощь

   
 
 автор: RMW   (24.11.2006 в 18:35)   письмо автору
 
   для: SHAman   (24.11.2006 в 15:09)
 

...

   
 
 автор: SHAman   (24.11.2006 в 17:03)   письмо автору
 
   для: SHAman   (24.11.2006 в 16:39)
 

О! Нашел решение. Подсказали.
Надо просто делать так:


var pic=new Image();
var picw, pich;    //инициация переменных высоты и ширины большой картинки
pic.onload=function() {picw=pic.width; pich=pic.height;}     //определение момента загрузки большой картинки
pic.src=newsrc;    //инициация загрузки большой картинки


То бишь, нужно присваивать картинке src уже после того, как произошла ее загрузка =)

.....:(:(:(:(

Блин, теперь выводит просто ошибку. Короче: тыкаю на картинку, он говорит - ошибка. еще раз тыкаю - работает.... Че делать? Вот, короче, полный код:


function bigpic(newsrc, title)    {
var div = d.getElementById('bigpic');

var pic=new Image();
var picw, pich;    //инициация переменных высоты и ширины большой картинки
pic.onload=function() {picw=pic.width; pich=pic.height;}     //определение момента загрузки большой картинки
pic.src=newsrc;    //инициация загрузки большой картинки


var bod=d.getElementById('body');
var x = d.getElementById('close');

var win_x=bod.clientWidth;
var win_y=bod.scrollTop;

div.style.width=picw;
div.style.height=pich;


var divc=div.innerHTML;
var newtext='<span id=close onclick="closepic();" style="float: right;">[X]</span><div id=bigpic_tit>'+title+'</div><img src='+newsrc+' id=pic />';
div.innerHTML=newtext;
div.style.left=(win_x/2-picw/2);
div.style.top=(win_y+bod.clientHeight/2-pich/2);
div.style.display='inline';
}


А! Уже голова пухнет от этой картинки...:( Подсобите.

   
 
 автор: SHAman   (24.11.2006 в 16:39)   письмо автору
 
   для: coloboc66   (24.11.2006 в 16:33)
 

Ширину и высоту мне нужно задавать диву. Из них высчитывается позиционирование. Див потом будет вставать по середине экрана, для этого надо знать ширину высоту экрана и ширину высоту дива. А див - под размер картинки;)

Пожалуйста, не обходите тему. Я точно знаю что мне нужно. Мне нужно определить ширину и высоту картинки в тот момент, когда она загрузится, но не раньше.

   
 
 автор: coloboc66   (24.11.2006 в 16:33)   письмо автору
 
   для: SHAman   (24.11.2006 в 16:13)
 

Я конечно извиняюсь, может я невнимательно читал тему, но, насколько я понимаю, если вы помещаете картинку в ДИВ, просто не нужно для дива указывать НИКАКИХ размеров, ни стилями, ни скриптами. Его размеры автоматически будут подогнаны под размер картинки.

   
 
 автор: SHAman   (24.11.2006 в 16:13)   письмо автору
 
   для: coloboc66   (24.11.2006 в 16:04)
 

Ну, то, что определить размер картинки можно только после того, как загрузишь ее - логично. Но как определить тот момент, когда она загрузилась, чтобы начать определять размеры? И ПХП тут не при чем. В данном случае интересует JS...

   
 
 автор: coloboc66   (24.11.2006 в 16:04)   письмо автору
 
   для: SHAman   (24.11.2006 в 15:09)
 

Я знаю, что в РНР есть ф-ция определения размера файла, по идее аналог должен быть и в ява-скрипт. Используя такую функцию, можно заставить скрипт определять ширину и высоту картинки, только если файл имеет размер не менее заданного. Т.е. когда он уже загружен.

   
 
 автор: SHAman   (24.11.2006 в 15:09)   письмо автору
 
   для: SHAman   (24.11.2006 в 14:15)
 

Не получается.... Вот мой код:

var pic=new Image();
pic.src=newsrc;    //инициация загрузки большой картинки
var picw, pich;    //инициация переменных высоты и ширины большой картинки
pic.onload=function() {
picw=pic.width; pich=pic.height; alert('картинка загрузилась');
}     //определение момента загрузки большой картинки
alert(picw+', '+pich);    //вывод ширины и высоты большой картинки после ее загрузки.


Блин, как только выполнилась первая строка, объект уже существует, а значит, проверка
if (pic) уже вернет true. Как мне сделать так, чтобы скрипт дожидался загрузки картинки? А не пытался определить высоту и ширину до ее загрузки?

   
 
 автор: SHAman   (24.11.2006 в 14:15)   письмо автору
 
   для: 12345   (23.11.2006 в 19:49)
 

Спасибо, сейчас попробую...

   
 
 автор: 12345   (23.11.2006 в 19:49)   письмо автору
 
   для: AlexSol   (23.11.2006 в 19:32)
 

т.е.
pic.onload=function(){alert([pic.width,pic.height])}

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования