03.07.2014, 17:51
|
Профессор
|
|
Регистрация: 02.05.2012
Сообщений: 197
|
|
Вынести функцию
Подскажите необходимо задать автоматом размеры всем картинкам товаров на сайте.
Делаю так:
<img onload="var img=new Image(); img.src=this.src; this.width=img.width;this.height=img.height" src="url kartinki" alt="text" title="text1'" >
Нормально выводит ширину и высоту картинки.
Подскажите только как вывести вот это для всех картинок в отдельную функцию:
onload="var img=new Image(); img.src=this.src; this.width=img.width;this.height=img.height"
что бы не вставлять во все картинки на сайте?
|
|
03.07.2014, 18:22
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Взрыв мозга! Что ты вообще делаешь?! Твой код ведь эквивалентен этому:
<img onload="this.width=this.width;this.height=this.height" src="url kartinki" alt="text" title="text1'" >
Зачем это вообще нужно? Картинки и так по умолчанию нужного размера!
|
|
03.07.2014, 18:25
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Зачем, лол, картинка и так автоматически получает свои размеры.
<img onload="alert([this.width,this.height])" src="http://javascript.ru/forum/images/smilies/smile.gif" alt="text" title="text1'" >
Сообщение от Sweet
|
Зачем это вообще нужно?
|
Может ему атрибуты понадобились зачем-то?
<img onload="alert(outerHTML); width=width;height=height; alert(outerHTML)" src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif">
__________________
29375, 35
Последний раз редактировалось Aetae, 03.07.2014 в 18:33.
|
|
03.07.2014, 18:33
|
Профессор
|
|
Регистрация: 02.05.2012
Сообщений: 197
|
|
Мне нужно передавать фактический размер картинок товаров, что бы быстрея загружались все картинки товаров на странице
|
|
03.07.2014, 18:46
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
djonA, а ты юморист: img onload происходит тогда, когда картинка уже загрузилась. Никакого вообще прироста ни в скорости загрузки(которого и так быть не может на самом деле), ни в скорости отрисовки страницы(тут - да), соответственно, не будет.
Размеры картинок должны быть заранее проставлены на этапе создания страницы. Это должен сразу делать движок вашено сайта, а не js, причём раз и навсегда.
__________________
29375, 35
Последний раз редактировалось Aetae, 03.07.2014 в 18:48.
|
|
03.07.2014, 18:47
|
Профессор
|
|
Регистрация: 02.05.2012
Сообщений: 197
|
|
т.е мне нужно на стадии передачи в шаблон уже передавать размеры изображения?
|
|
03.07.2014, 18:51
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Сообщение от djonA
|
Мне нужно передавать фактический размер картинок товаров, что бы быстрея загружались все картинки товаров на странице
|
Если я тебя правильно понял, ты считаешь, что если после загрузки установить размеры картинок, то они быстрее загрузятся в прошлом? Но ведь тогда, ты и размеры им установишь раньше, сократив таким образом ещё больше время загрузки в прошлом. И так вплоть до мнговенной загрузки!
А ещё вот смотри, есть равенство: 4 * 0 = 5 * 0. Делим левую и правую часть на ноль, и получаем: 4 = 5. Клёво?
|
|
03.07.2014, 18:58
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Сообщение от djonA
|
т.е мне нужно на стадии передачи в шаблон уже передавать размеры изображения?
|
Я не знаю что ты там используешь для своего сайта, может монструозную cms, может статические html странички, как я тебе отвечу?
Размеры картинок должны заносится в базу\код сразу в момент добавления их тобой на сайт, тем или иным методом.
__________________
29375, 35
|
|
04.07.2014, 00:53
|
Профессор
|
|
Регистрация: 17.05.2014
Сообщений: 197
|
|
Я не совсем понял, что Вы хотите, но чтобы закешировать картинки, можно сделать типа этого:
Код:
|
getImage = function(address){
var img=new Image()
img.src=address
return img
}
addresses="image1.jpeg image2.jpeg image3.jpeg".split(" ")
images=[]
addresses.forEach(function(address){images.push(getImage(address))})
put=function(){
images.forEach(function(img){document.body.appendChild(img)})
}
onload=put |
Это, наверное, может потребоваться для юзабилити, при медленном соединении, когда юзера раздражает, что из-за медленной отрисовки картинок он не может читать текст, все рябит и плавает иногда. Тут все картинки, к моменту окончания загрузки, вроде, должны загрузиться и все размеры проставлены, по онлоад мы их только вставляем.
|
|
04.07.2014, 01:05
|
Профессор
|
|
Регистрация: 17.05.2014
Сообщений: 197
|
|
Сообщение от Aetae
|
соответственно, не будет
|
Если просто отрисовка в вакууме -- то не будет. Если же надо контролировать последовательность, может быть профит. Например, некомильфо будет, если на онклик повешен показ изображения, а изображение это еще не загружено.
|
|
|
|