Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > размер картинки


Автор: yuliada 4.7.2009, 12:19
Есть текстовое поле с кнопкой, которое по нажатию показывает какую-то картинку. Картинка генерится сервлетом в зависимости от текста в поле, переданного параметром в url. Т.е. в html скриптом вставляется что-то вроде
Код

<img src='[url сервлета]?parameter=blah&[что-то еще]'>

Если параметру не соответствует никакая картинка, то приходит белое изображение 1px на 1px. Нужно как-то проверить какой у картинки размер и в зависимости от этого добавлять ее в код страницы или нет. Попробовала вот так:
Код

var nurl = 'http://something/someservlet?parameter=' + escape(name);
objImage = new Image();
objImage.src=nurl + '&h=192&w=256';
objImage.onload=function() {
  if(objImage.height>1){
    alert(objImage.height);
    document.getElementById('pathwaysImage').innerHTML='<b>Pathways</b><br><br>'+
      '<a href="' + getDomain() + '/imap.php?param='+escape(name)+'">'+
      '<img id="imgPath" class="searchScreenshot" src="' + nurl + '&h=192&w=256"/></a><br><br>';
  }else{
    document.getElementById('pathwaysImage').innerHTML='';
  }
};

Не получается, alert показывает, что у картинки высота такая же как и у нормальной найденной картинки, хотя на странице я вижу белую точку. Если ввести в адресную строку браузера nurl + '&h=192&w=256' и проверить какая там картинка, то там и есть белая точка, но почему тогда значение height не равно 1?

Автор: fidres 4.7.2009, 13:21
ну исмысл снова пытаться что-то делать уже в процессе отображения страницы, когда всё это можно определить средствами серверной части?
imap.php пусть и карпеет над этой задачей! там и надо вставлять проверку на ширину/высоту картинки, передаваемой клиенту!

Автор: yuliada 4.7.2009, 22:09
Не совсем поняла как это. На странице есть поле для ввода, заранее не известно что туда напишут. При нажатии кнопки надо показать картинку в зависимости от введенного текста (т.е. динамически вставить ее на страницу), при клике на которую будет переход на imap.php или не показать. Как заставить imap.php это проверять, он тут как бы не причем???
Допустим там вообще вот такой код без всяких imap, что можно сделать?
Код

document.getElementById('pathwaysImage').innerHTML='<b>Pathways</b><br><br>'+      
      '<img id="imgPath" class="searchScreenshot" src="' + nurl + '&h=192&w=256"/><br><br>';

Автор: fidres 12.7.2009, 09:08
>> Картинка генерится сервлетом в зависимости от текста в поле, переданного параметром в url
Код
http://something/someservlet?parameter=' + escape(name);
куда передаётся? чем обрабатывается?
я так понимаю, что уже после обработки введёных данных что-то происходит с картинкой...

последовательность событий:
открывается форма.
в ней, в поле ввода набирается текст, который передаётся на сервак для обработки.
в зависимости от введённого слова/данных - сервер присылает картинку/ответ, которые в последствии нужно отобразить (и правильно подогнать по размеру).

так?

вот я и говорю: на сервере пусть размер узнаётся/подгоняется.

Автор: yuliada 12.7.2009, 09:50
Почти так, подгонять ничего не надо. Сервер умеет отдавать картинку заданного (т.е. какого-то фиксированного) размера (т.е. он сам все подгоняет), но если на введенный текст нет никакой картинки, то сервер всегда отдает белую картинку 1px на 1px, надо это как-то отследить и в этом случае ее не показывать

Автор: yuliada 12.7.2009, 10:23
Картинка как-то генерится java-сервлетом, что там конкретно делается не знаю, у меня на него есть только ссылка

Автор: mxt 12.7.2009, 13:09
проверяй на событие load.  если картинка 1 пиксель, то удаляй её и контейнер в котором она находится.

Автор: yuliada 13.7.2009, 19:55
В коде, который выше, примерно это и делается, или там что-то неправильно?

Автор: fidres 15.7.2009, 00:25
ну соответсвенно что-то неверно!
иначе бы он работал!
 smile 
в любом случае чистый код - верный.
дело в параметрах обработки запроса на сервере.
хвост из "&h=192&w=256" как-то видимо не оговорен в серверном скрипте, которому передаётся твой запрос.
 smile 
код страницы выложить полностью можно?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)