Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменение размеров картинки через скрипт (https://javascript.ru/forum/misc/1507-izmenenie-razmerov-kartinki-cherez-skript.html)

SLV 03.08.2008 07:41

Изменение размеров картинки через скрипт
 
Помогите пожалуйста, у меня на сайте в комментариях можно вставлять картинки тэгами со ссылкой на сервисы типа radikal.ru, а проблема в том что любой может запостить как безобидный аватор, так и огромную 5мегапиксельную фотку, с последствиями для дизайна и чтоб этого не было, я написал такой несложный ява-скрипт:

Код:
<img border="0" id="i1217675751" onload=" var s=getElementById('i1217675751'); var w=s.width; var h=s.height; var wr=screen.width-590; var hr=screen.height-590; if(wr<435){wr=435;} if(w>=h){ if(w>wr){ this.width=wr;this.height=h/(w/wr); } } if(w<h){ if(h>hr){ this.height=hr;this.width=w/(h/hr);} }" src="1.jpg">

Так вот в ИЕ 6.0, firefoxе проблем никаких, а вот в опере он почемуто не работает, даже через функцию alert пробил значения переменных w и h - ослик с лисом выдают реальные размеры картинки, а опера возвращает нули. Что нужно исправить?

manitor 25.12.2010 17:07

Изменение размера картинкиможно скачать отсюда.

monolithed 25.12.2010 20:15

Цитата:

Сообщение от manitor
Изменение размера картинкиможно скачать отсюда.

хватит уже спамить своей софтиной!

monolithed 25.12.2010 20:41

Что-то типо такого:

<script type="text/javascript">
window.onload = function(){
    var img = document.getElementById('div').getElementsByTagName('img'), i = img.length;
    while(i--){
        var computed = window.getComputedStyle ? getComputedStyle(img[i], null) : img[i].currentStyle;
        img[i].style.width = parseInt(computed.width) >= 100 ? '100px' :'';
    }
};
</script>

<div id="div">
    <img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" />
    <img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" />
</div>


или такого:

<script type="text/javascript">
window.onload = function(){
    var img = document.getElementById('div').getElementsByTagName('img'), i = img.length;
    while(i--){
        img[i].style.width = img[i].offsetWidth >= 100 ? '100px' : '';
    }
};
</script>

<div id="div">
    <img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" />
    <img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" />
</div>

рони 27.12.2010 11:40

на всякий случай )))
Цитата:

Сообщение от monolithed
computed.width

в Internet Explorer будет auto если не прописано иное.
так как у img есть свойство width, достаточно проверить его.
Пример:
<script type="text/javascript">
window.onload = function () {
    for (var a = document.getElementById("div").getElementsByTagName("img"), b = a.length; b--;)
     a[b].width >= 100 && (a[b].width = "100")
};
</script>
<div id="div">
    <img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" />
    <img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" />
</div>


Часовой пояс GMT +3, время: 10:15.