![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Люди, помогите. Не знаю как решить задачку:
По определенному событию начинаю грузить картинку. Мне нужно узнать ширину и высоту этой картинки. Вот код:
Проблема в том, что ширина и высота картинки так и не определяются. Что-то я не то делаю. Как убедиться в том, что картинка загружена полностью и только тогда брать ширину и высоту? Сейчас у меня и то и то становится undefined Помогите пожалуйста |
|||
|
||||
| griker |
|
|||
![]() MDMA ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 14.7.2006 Где: Tallinn Репутация: 1 Всего: 8 |
-------------------- I don't respect police |
|||
|
||||
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Неее... У меня картинки пока что нет. Т.е. хтмл-кода вообще нет. Он генерируется после загрузки картинки. Т.е. у меня, грубо говоря, пустая страница. А когда я запускаю скрипт, начинает догружаться картинка. Мне, скажем, нужно ее поместить в div. Для этого мне нужно задать диву размеры, равные размерам картинки. Собственно вот. Так как вы предложили - не подходит. Картинка выводится гораздо позже того, как мне нужны ширина и высота.
|
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
SHAmanovi4, так перенесите второй alert и все, что нуждается в переменных picw, pich внутрь той функции, которая onload объекта Image(). Скрипт же не становится на паузу от самого факта назначения обрабочика...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| 12345c |
|
||||||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Добавлено @ 16:17 Лучше ww=setInterval(...), а когда определится a.width&&a.height, стереть: cleaRInterval(ww); Добавлено @ 16:19 Нет, всё понятно, вот так стабильно работает:
Это сообщение отредактировал(а) 12345c - 24.11.2006, 16:21 |
||||||
|
|||||||
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
О! Спасибо большое! Заработало! Оказывается, нужно было присваивать src уже после того, как наступил onload! Крутотень... век живи - век учись. Спасибо большое.
...... Блин! Теперь вот какое дело: он при первом клике сообщает об ошибке. Только на второй делает все как полагается... Вот полный листинг скрипта... не хотел выкладывать, но, похоже, выбора нет.
Это сообщение отредактировал(а) SHAmanovi4 - 24.11.2006, 17:05 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Поправочка: не после того, как наступил, а после того, как для него был назначен обработчик. Именно чтобы иметь гарантию того, что onload не успеет "проскочить" необработанным... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
А если я запихаю остатки своей функции (смотри код в моем посте выше), то оно будет работать чтоли... ща попробую...
|
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
1) function bigpic(newsrc, title) {
var div = d.getElementById('bigpic'); - даст ошибку в FF из-за 2 переменных с одинаковым имененем (он считает, что ид - это переменная); 2) возможно, на больших картинках pic.onload=function() {picw=pic.width; pich=pic.height;} не сработает (были такие проблемы, правда, при прорисовке картинки), и тогда надо вставить задержку. |
|||
|
||||
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Во блин! Тупизм... ладно, исправлю. Это не долго.... Господа, пожааааалуйста! Напишите работающий пример! |
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Действительно, проверил эту программу на локальном хосте в IE - успевает, а в FF - нет. Придётся переделать с задержками. Минут через 5.
Это сообщение отредактировал(а) 12345c - 24.11.2006, 18:37 |
|||
|
||||
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Во! ОТЛИЧНО!
http://anime.insyss.ru/galery просто хочу нормально чтобы картинки открывались в галерее. Я написал галерею на Perl, хочу ее в свободное плавание запустить. Вот готовлю. Спасибо еще раз. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
12345c, а в чем все же преимущество периодического вызова по таймауту однократному вызову по Onload?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Видимо, в том, что onload проскакивал. Попробуйте сделать по onload и по таймауту. По onload мне предлагали делать все. И у меня не получалось. А по таймауту получилось. Можете посмотреть по моей ссылке результат.
сам понимаю что по таймауту не оч хорошо получается - функция висит в памяти. Но что пделать, если так надежнее? |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
SHAmanovi4, не знаю, я поэкспериментировал с Вашим кодом с onload, только тупо перенес в него весь код за исключением присвоения src:
И никаких проблем в FF не увидел, ни на быстрой локальной загрузке, ни на медленной удаленной. Предлагаю дождаться ответа 12345c... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
(Тот же самый эффект значительно проще, без скриптов, получить, если сгенерировать отцентрированную (по горизонтали) таблицу неопределённой ширины и высоты, вставленную в таблицу шириной и высотой 100%, имеющую absolute. Картинка тогда проявится только после окончания загрузки (т.к. в таблице), а центровку не надо будет вычислять.)
Примерно:
Внешняя таблица без фона не мешает делать клики, что иллюстрируется ссылкой. ...Хотя нет, мешает. Это сообщение отредактировал(а) 12345c - 24.11.2006, 19:02 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Имхо, "значительно проще без скриптов" из скрипта все же не получится ;)
Это сообщение отредактировал(а) SelenIT - 24.11.2006, 19:09 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Я тестировал на 1.07, там FF (в моей версии) не успевал выдать правильные размеры, давал (0,0). И, видимо, это где угодно могло случиться, поэтому проверка по таймауту страхует неуспевание. Кстати, без таймаута уже через несколько операторов FF давал правильные размеры, но на это надеяться, конечно, нельзя. |
|||
|
||||
| SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
12345c, я правильно понимаю, такая беда была с этим вариантом?
А если его заменить на такой
Это сообщение отредактировал(а) SelenIT - 24.11.2006, 20:30 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Скорее всего, разницы не будет, потому что стоило взять в FF a.width чуть позже без задержек по tomeout, как становилось не 0, а нужное число.
|
|||
|
||||
| SHAmanovi4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
как это выглядит сейчас:
http://anime.insyss.ru/galery/ И вот какой ща скрипт:
На самом деле, я уже на грани отчаяния. Я логику понимаю, следую за ней и не вижу ошибки. ПОЧЕМУ Это сообщение отредактировал(а) SHAmanovi4 - 30.11.2006, 18:28 |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |