![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Atlete |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Вот столкнулся со следующей проблемой.
Написал не сложный tooltip с картинками. Создаю картинку, добавляю на страницу. Все это работает. Но при создании необходимо получить размер картинки (ширину, высоту). Если картинка больше максимального размера изменить ей высоту и ширину до максимальной. Код примерно такой:
Вот тут получается что высота и ширина равна нулю. Пробовал получать ширину и высоту следующим образом:
Результат тот-же. Есть ли возможность получить реальную высоту и ширину создаваемой так картинки. Возможно необходимо загрузить все нужные картинки в скрытом div'е например, а потом уже при создании использовать их. Это еще не пробовал. У кого есть еще какие мысли? Что я делаю не так? |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
может она ещё не загрузилась?
вообще, картинки привычнее создавать var img = new Image(); проверить состояние загрузки, вроде через img.onload = function() {}; можно |
|||
|
||||
| Atlete |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Похоже это оно.
Я как то совсем забыл про этот метод. Думаю теперь все будет работать правильно. Спасибо. |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
И еще кроме как createElement или new Image надо поместить созданный элемент в ДОМ. Пока он не помещен, его визуальные стили не посмотришь.
|
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 2 Всего: 16 |
зато width и height посмотришь. А src лучше назначать после назначения onload
Это сообщение отредактировал(а) youri - 6.11.2009, 12:36 |
|||
|
||||
| Atlete |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Если src назначать в onload то получается размер картинки тоже только после выполнения onload можно узнать?
Я сделал так. src назначил до onload, потом в onload уже беру все нужные параметры. До тех пор пока картинка загружается отображаю пользователю сообщение об этом. |
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 2 Всего: 16 |
||||
|
||||
| Atlete |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
youri прошу прощения сильно. Недосмотрел
Перенес присвоение присвоения src после установления onload. Но возникла интересная (неприятная) ситуация. В ИЕ6 и Opeara 10 при первом выполнении функции onload вызывается и все отрабатывает как положено. Но при повторном вызове функции onload не срабатывает. Проверял при помощи такой строки:
Как можно заставить нормально отрабатывать метод onload при повторном вызове функции? Возможно что то делаю не так. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
по-моему, у оперы насчёт загрузки изображений был глюк. и здесь кто-то выкладывал решение его
|
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 2 Всего: 16 |
выложили минимальный неработающий пример. Я как раз это проверял (по идее), когда отвечал. У меня работало в любом порядке, но src логичнее назначать после onload, чтобы всегда срабатывало
|
|||
|
||||
| Atlete |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
К сожалению не помогло даже изменения место положения присвоения src.
Вот полный код функции:
Возможно где то туплю. P.S. не судите строго знаю что некоторые вещи сделаны топорно |
|||
|
||||
| Atlete |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Проблему решил.
Первое:
ну и немного подправил javascript: было:
стало:
Возможно кому то пригодится и такая реализация. |
||||||
|
|||||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 2 Всего: 16 |
ты б может стили в css вынес... да и вообще, разбил бы эту функцию на меньшие (;
а ты что фотографии с помощью php отдаешь? И значит теперь фотографии не будут никогда кешироваться? |
|||
|
||||
| Atlete |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Это скриншоты. Я их не отдаю с помощью php. Они лежать в определенной папке.
Но кешироваться они не будут. Насчет модернизации скрипта, то можно кроме выноса стилей css еще и все остальное переделать на более правильный вид. Возможно на досуге и оптимизирую. Из-за кеширования и не работал метод onload. Запретил кеширование и все заработало. |
|||
|
||||
| youri |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 2 Всего: 16 |
а (: т.е. ты добавил заголовки к основной страничке и думаешь, что фотографии кэшироваться не будут? Тогда это решение очень похоже на "Переставил компьютер в другую комнату. Всем спасибо. Тему можно закрывать". за счет чего?
У меня все работает и в ie6 и в opera 10, при том что фотографии достаются из кэша. Попробуй простейшую страничку
и скажи, какие заголовки возвращает сервер |
||||||
|
|||||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |