Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не совсем правильно пашет событие onload для картинки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
zypikov
Отправлено: 07 Октября, 2012 - 11:45:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Сабж. По ajax заливаются картинки на сервак. Потом залитая картинка в уменьшеном виде показывается пользователю. Картинку можно удалить нажав на рядом с ней крестик. После того как картинка загрузилась для нее срабатывает событие onload при помощи метода jQuery она перемещатся.

Но только вот некоторые картинки перемещаются не всегда. Почему? А тупо остаются висеть там где изначально были заданы кординаты для контейнера этих картинок. В основном это справедлило для маленьких картинок(размером меньше 20кб).

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3.  var imageDiv = document.createElement('div'); //контейнер для картинки
  4.  var imgs = document.createElement('img')
  5.  var del = document.createElement('img');
  6.  del.src = 'cssRules/img/delete.jpg';
  7.  del.title = 'Удалить';
  8.  imageDiv.appendChild(del);
  9.  imgs.src = papka_images + '/' + link; // формируем ссылку на маленькое изображение
  10.  imageDiv.appendChild(imgs);
  11.  body.appendChild(imageDiv);
  12.  
  13.  imgs.onload = function(){
  14.                  var jQ = '#' + idImage;
  15.             $(jQ).animate({opacity: "1", top: 800 + 20*colImages, left: 1400 + 20*colImages}, "slow");
  16.  return true;
  17.  


-----
У всего есть обратная сторона.
 
 Top
armancho7777777 Супермодератор
Отправлено: 07 Октября, 2012 - 12:52:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Как-то так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var img_src = papka_images + '/' + link;
  3.  
  4. $('<img src="'+img_src+'">').appendTo('#image-conteiner').load(function(e) {
  5.    
  6.         $(this).animate({
  7.                    opacity: 1,
  8.                    top: 800 + 20 * colImages,
  9.                    left: 1400 + 20 * colImages
  10.                    }, "slow");
  11.    
  12. });
  13.  

(Отредактировано автором: 07 Октября, 2012 - 12:53:47)

 
 Top
IllusionMH
Отправлено: 07 Октября, 2012 - 15:22:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




zypikov, обработчик события onload нужно присваивать до задания свойства src и вставки изображения на страницу, и ставлять его уже после загрузки.
Еще из-за кеширования может не срабатывать событие загрузки. Стоит проверить наверняка во всех браузерах при обычной загрузке и загрузке без кеша.

(Отредактировано автором: 07 Октября, 2012 - 15:26:41)

 
 Top
zypikov
Отправлено: 10 Октября, 2012 - 13:02:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




IllusionMH пишет:
zypikov, обработчик события onload нужно присваивать до задания свойства src и вставки изображения на страницу, и ставлять его уже после загрузки.

Сделал по вашей рекомендации .. все пашет, спасибо!
В карму +1 от меня IllusionMH

IllusionMH пишет:
Еще из-за кеширования может не срабатывать событие загрузки. Стоит проверить наверняка во всех браузерах при обычной загрузке и загрузке без кеша.


Так имя файла каждый раз разное) Или браузеры, кроме совпадению по имени могут еще по другому определять одну и ту же карнтинку?
Да на моем диалАпе сложно без кэша(((

armancho7777777 пишет:
Как-то так:

armancho7777777, ваш код конечно покрасившэ, может когда-нибудь полность перееду на jQuery, но его не тестировал.


-----
У всего есть обратная сторона.
 
 Top
IllusionMH
Отправлено: 10 Октября, 2012 - 14:47:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




zypikov, ну я точно не знал про разные картинки, просто предположение.

P.S. ИМХО, нет смысла переводить JS код который отлично работает во всех браузерах без jQ, на код с jQ. Только проблемные участки(ajax, deferred, animations) и собрать либу только с этими модулями
 
 Top
armancho7777777 Супермодератор
Отправлено: 10 Октября, 2012 - 15:09:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




IllusionMH пишет:
нет смысла переводить JS код который отлично работает во всех браузерах без jQ, на код с jQ.

Даже если подключен jQ ?
Так же кода больше выйдет.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB