В IE не извлекаются размеры скрытой картинки
Доброго времени суток.
Как можно извлечь в IE размеры скрытой картинки? Например есть картинка <img class="picimg" src="'image/test.jpeg" style="display:none;" /> надо узнать её размер и исходя из этого, отцентрировать относительно размера экрана, извлекал так: var height = $(".picimg").attr("height"); var width = $(".picimg").attr("width"); во всех нормально, кроме IE, в нем размеры по нулям. |
|
Цитата:
|
>Это приемлемо, если общий код не тяжёлый - тогда юзер ничего не заметит.
Это неприемлемо никогда, ибо вызывает 2 лишних и бессмысленных перерисовки. Обычно картинку просто уводят далеко за левый верхний угол, с помощью position: absolute. Кстати большинство ситуаций, когда на ум приходит необходимость учитывать заранее неизвестный размер картинки, решается с помощью css без этого. |
а так тоже размеры не определены?
$(".picimg").width(); $(".picimg").height(); |
Я с данной проблемой боролся по всякому. Могу добавить еще, что размеры не будут выданы, пока картинка в принципе не загрузится. При отображении в одном месте последовательно нескольких картинок (что-то типа слайд-шоу) при больших размерах картинок, при медленном интернете возникают всякие неприятности. Если на время загрузки прятать картинку ("далеко за левый верхний угол"), то некоторое время пользователь не видит ничего - раздражает. Если не прятать, то пока грузится новая картинка - её размеры искажаются размерами от предыдущей картинки.
Чтобы побороть всё это я нашел пока один путь: сервер должен знать размеры картинки (хранить в базе данных) и при отсылке клиенту src новой картинки одновременно сообщать ее размеры. Тогда проблема нулевых размеров отпадает. |
Цитата:
var img = new Image(); img.onload = function() { alert( [ "width: " + this.width, "height: " + this.height ] ); } img.src = "http://javascript.ru/forum/images/smilies/smile.gif"; |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
<script> var img = new Image(); img.onload = function() { alert( [ "width: " + this.width, "height: " + this.height ] ); } //1 img.src = "http://javascript.ru/forum/images/smilies/smile.gif"; //2 img.src = "http://javascript.ru/forum/images/smilies/smile.gif"; </script> |
В вашем примере src у img не изменяется, ничего странного, что события нет.
|
Цитата:
Во-вторых, на тех сайтах где по клику по превьюшке изображение скрывалось, а по onload показывалось - это перестало работать в случаях, когда пользователь второй раз подряд клацает по превьюшке (как ни странно, распространенное явление). |
Цитата:
Цитата:
Цитата:
Вообще вы все задолбали: когда мне надо было писать превьюшку - я вообще не указывал никаках размеров вручную, центрировал всё css'ом и всё прекрасно работало с любыми вариантами. |
Цитата:
Цитата:
Цитата:
|
Не будем холиварить. Просто субъективно опера доставила мне в общей сложности даже больше НЕНАВИСТИ чем ие.)
|
Цитата:
В любом случае нужно ссылаться не на прошлые ошибки а на текущие. А то многие в прошлом получили негатив, а сейчас и понятия не имеют что оно уже на сегодняшний день из себя представляет. И продолжают на старых эмоциях срать по сей день то что срали год/два/три и т.д. лет назад. Нет что бы взять и получить новые эмоции. |
Aetae, присоединяюсь к Вам насчет Оперы.
Цитата:
Вот пример в Opera. <html> <body> <script> var d = document.createElement('DIV') d.style.cssText = 'position:absolute; top:0px; left:0px; height:100%; width:200px; background-color:#FFAAAA'; document.body.appendChild(d); </script> </body> </html> -Если Вы выполните этот код в полностью раскрытом браузере на весь экран, а потом нажмете F11 (Full Screan), то розовый прямоугольник не примет 100%-ю высоту. -Если Вы выполните этот код в не полностью раскрытом браузере, а потом потяните за нижнюю грань окна, то то розовый прямоугольник также не примет 100%-ю высоту. Это только в Опере. |
Цитата:
|
Цитата:
2. Я не произносил слово "говно". Речь идет об удовлетворении желания пользователей работать в своем любимом браузере. Пользователи любят браузеры за что угодно. За плагины, за всякие фишки... и им плевать на баги и проблемы программистов. Я браузер оцениваю не по фишкам, а по количеству доработок кода, который он требует под себя. И могу откровенно сказать, что на сегодняшний день я ненавижу все браузеры, кроме Google Chrome. И не потому, что он голубенький. А потому что то, что я задумал - то Chrome и показал. А в других - вечно что-то вылезет боком! Даже если делаешь всё по стандарту. |
Цитата:
Я конечно не утверждаю что Опера идеальный браузер, как я писал выше у всех есть свои баги. Я знаю точно что у оперы есть давнешние баги которые реально критичны, но их отсилы пяток штук. А что я чаще всего от людей слышу на вопрос что-же в нем говеного, один единтсвенны ответ: "Опера плохо поддерживает стандарты". На что я спокойно могу ответить полнейшая ложь. Ибо Опера наоборот делает все по стандартам, а то что у других браузеров есть экспериментальные свистелки/перделки это еще не делает браузер идеальным, на то они и экспериментальные. Цитата:
Цитата:
|
Цитата:
не вижу смысла комментировать дальнейшее, т.к. желающие могут проследовать в другую ветку форума на просмотр: "Битва титанов III. Opera против всех". но я не пойду. |
Цитата:
|
Цитата:
я проверял по интервалу, когда же там к элементу стиль применится ... |
Цитата:
Маэстро, и да ваш баг решается простым добавлением в стиль тега body стопроцентную высоту: <html> <body style="height: 100%;"> <script> var d = document.createElement('DIV') d.style.cssText = 'position:absolute; top:0px; left:0px; height:100%; width:200px; background-color:#FFAAAA'; document.body.appendChild(d); </script> </body> </html> |
Маэстро, боюсь ваш список покрыт наверно подобными вещами которые вы считаете багами. Тогда увы но это не баги а нормальное поведение браузера. Просто вы видимо не знаете того что теги позиционируются относительно родительских элементов а не окна браузера. А так как body это тоже блочный элемент то он не раздвигается при изменении высоты потому что у него не указано это в правилах CSS. Плохо читаете стандарты.
А попортил жизнь вам не браузер, а ваша неопытность и незнание. И винить браузер за отсутствие знаний, я не считаю правильным. |
devote,
Вы упорно хотите втянуть меня в эту дискуссию!... а я не хочу. Поэтому повторяю последний раз: я не говорил слово "говно". Я даже не говорил слово "баги". Я сказал, что браузер я оцениваю по количеству доработок кода, который он требует под себя. И если из 5 браузеров 4 браузера не требуют body style="height: 100%;", а Опера требует, то она мне этим не нравится! Не вообще не нравится, а именно этим моментом. Тот же подход и к другим браузерам. Но если Вам нравится http://javascript.ru/forum/css-html-...ole-input.html |
Цитата:
Цитата:
|
devote,
Дело не только в багах. Дело еще в некоторой принципиальности Оперы в некоторых вопросах, по которым ничего изменить нельзя. Например, эффект "синей рамки" на сфокусированных элементах, который отменить нельзя, это вопросы связанные с двойным кликом и меню по правой кнопке мыши, это никому не нужное накопление памяти по 50 KB при чтении данных в IFRAME и т.д. |
Цитата:
Цитата:
Цитата:
|
такс... дискуссия продолжается. я буду отвечать всё меньше, потому что мы в чужой ветке и вообще это бесконечный спор о том что вкуснее: суп или борщ.
Цитата:
http://javascript.ru/forum/css-html-...ego-fokus.html мешало это вебмастеру. точнее заказчику, который считал, что это портит дизайн сайта. Цитата:
Цитата:
затем, что есть старые сайты, которые работали бы себе на iframe и черт с ними, но Опера однажды ввела фичу: просмотр изображений - микрокопий сайтов, которые открыты в закладках. это привело к тому, что при загрузке данных в iframe тоже создаются (автоматически) такие же никому ненужные изображения. опять скажете быдлокод? как бы там ни было, есть понятие реинжиниринга. со временем сайт должен подлежать переделке. но кто оплатит это? вы готовы оплатить реинжиниринг? |
Цитата:
Цитата:
Цитата:
Как я вижу вы мне приводите не баги оперы, а не удобные для вас фишки интерфейса браузера... Если вам не нравится юзабельность браузера, так и скажите а не пытайтесь спорить о возможностях браузера с работой веб-сайтов. Мне как разработчику лично всеравно что и какие фишки встроены в браузер... Это проблемы пользователей а не веб-мастеров. И решать тут самим пользователям а не веб-мастерам, что для них удобно а что не удобно. |
та ладно...
на этом закончим. |
Добавлю вот еще что. Если вы хотите привести мне аргументы против браузера не со стороны клиентского интерфейса, который пользователь настраивает на свое усмотрение как пожелает.. А со стороны webAPI, то будьте добры приводите их. Все что происходит у клиента, это впервую очередь у клиента и его выбор никак не должен ограничиваться только лишь тем что какой-то заказчик захотел что бы такой-то плагин у юзеров не работал на их сайте.. Это называется не разработка сайтов, а хакинг. Когда ваш сайт всячески пытается отключить то ради чего пользователь выбрал этот браузер.
Люди пишут свои плагины/расширения для браузеров, и выкладывают их на всеобщее использование. Дык по вашему я как разработчик сайтов должен соглашаться с заказчиком на то что он не хочет видишь ли что бы какой-то плагин/расширение работали на его сайте. На это я спокойно отвечу заказчику. Если вам это не по душе это не значит что многим оно тоже не по душе. Люди выбирают продукт не по желаниям какого то заказчика, а по своим собственным. И если человек выбрал продукт а кто-то пытается ограничить/отключить то ради чего человек выбрал продукт, то просто тот кто пытается это сделать пойдет лесом. По крайней мере с моей стороны оно именно так и происходит. Если я захожу на сайт и вижу куча ограничений, то я больше туда никогда не захожу. |
Цитата:
|
Часовой пояс GMT +3, время: 08:46. |