Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
DivineArtS 08.12.2007 00:04 / 08.12.2007 00:05
Ребята - вот возникла такая идея: в тексте како-го либо дива находить все картинки и те, что превышают установленную длину или ширину - уменьшать до определенных размеров и показывать не их огромные оригиналы, а уменьшенные копии. С самим уменьшением понятно - будем делать через внешний хтмл. только вот вышла загвоздка в ЯваСкрипте и тут я застрял. А проблема вот в чем - я запускаю поиск всех тэгов img в div-е - скрипт их находит, но при переборе значений через JsHttpRequest посылается только последний src. Не могу найти причину и решение! помогите с отладкой?<div id="con"> <img src="/templates/trinity/i/video_btn.png" width="101" height="25"> <img src="/templates/trinity/i/video_btn.png" width="102" height="25"> <img src="/templates/trinity/i/video_btn.png" width="103" height="25"> <img src="/templates/trinity/i/video_btn.png" width="104" height="25"> </div> <script language="JavaScript" src="/js/JsHttpRequest.js"></script> <script> if (document.getElementsByTagName) { var images = document.getElementById('con').getElementsByTagName('img'); for (var i=0;i<images.length;i++) { var image = images[i]; if (image.getAttribute('src')){ if (image.getAttribute('width')) { var width=image.width^;} if (image.getAttribute('height')) { var height=image.height^;} if(width>height){maxSide='width'^;} else {maxSide='height'^;} var maxSide^; var curdir; curdir= image.src^; var destpath= curdir.substring(0,curdir.lastIndexOf('/')+1)^; var mainString= destpath var replaceStr = "\\/" var delim = "/g" var regexp = eval("/" + "\\/" + delim) var newvar=mainString.replace(regexp, replaceStr) regexp= eval('/\\' + newvar + delim) var filename=curdir.replace(regexp, "") var req = new JsHttpRequest()^; req.onreadystatechange = function() { if ( req.readyState == 4 ) { if ( req.responseJS ) { alert(req.responseJS.dpath)^; //var sc_req_image = new Image(); image.src = req.responseJS.dpath image.height=40^; image.width=30^; image.onclick=function(){alert('idiots outside')^;} } } } // disable caching req.caching = false^; // prepare object req.open(null, '/load.html', true)^; // показывает результат перебора всех значений document.write('<font color="black">'+destpath+' width='+width+' heght='+height+'<br>'+maxSide+' '+destpath+' '+filename+'</font><br>')^; // а это посылает последнее и возвращает только последний результат req.send( { dpath: destpath, side: maxSide, img: curdir, fname: filename } )^; }} } </script>это был код запускающий все это
@USE JSHttpRequest.p MySqlComp.p @main[] $oSql[^MySqlComp::create[$connect_string;$.bDebug(1)]] ^oSql.server{ ^rem{ *** decode input data *** } $hRequest[^JSHttpRequest:decodeRequest[]] ^rem{ *** set vars from decoded data *** } $sPath[$hRequest.dpath] $sName[$hRequest.fname] $sImg[$hRequest.img] $sMside[$hRequest.side] ^if(def $sPath){^JSHttpRequest:printResponse[;$.dpath[${sPath}_thumb_${sName}]$.fname[$sName]$.img[$sImg]$.side[$sMside]] }А этот - бэкэнд (я не стал пока заморачиваться - по идее здесь и присутствует уменьшение картинки и ссылка на _thumb_imagename.jpg посылается обратно и уменьшенная картинка загружается с сылкой на chromeless window с оригиналом. а если thumb уже есть - то просто посылается его адрес. но сейчас не суть - это ерунда.) А весь гвоздь в первом куске кода: даже таймер ставил между кругами цикла- не помогало.