Среди прочих задач для Open ClipArt Library понадобилось решить следующую:
Движок сайта позволяет создавать растровые копии из SVG "на лету", для этого используется следующая конструкция ссылки:
Идея улучшения - иметь окно, для ввода желаемого разрешения и выводить текст результирующей ссылки туда же, для удобства копирования.
Код с комментариями:
И HTML-код:
Движок сайта позволяет создавать растровые копии из SVG "на лету", для этого используется следующая конструкция ссылки:
http://www.openclipart.org/image/800px/svg_to_png/goose_necklace.pngТаким образом можно создавать файлы PNG с разрешением вплоть до 3840px.
Идея улучшения - иметь окно, для ввода желаемого разрешения и выводить текст результирующей ссылки туда же, для удобства копирования.
Код с комментариями:
<!-- lossy form handler --> <script type="text/javascript"> // главная функция function link_res_view(x) { var y=document.getElementById(x).value; TestVar = isNumberString (y); //вызов функции проверки поля ввода на недопустимые символы if (TestVar == 1) { //если успешно, переход к проверке на максимальное значение if (y > 3840) { alert("Resolution couldn't be higher 3840px!\r\nPlease download SVG and produce bitmap locally."); $("input[name=resolution]").val('Type resolution of bitmap');} else { var bitmap_link = $('a[href*="/image/800px/"]').attr('href').replace("800", y); $("input[name=resolution]").val(bitmap_link); $('a[href*="/image/800px/"]').attr('href',bitmap_link); } } else { alert("C'mon - resolution is digits only!"); $("input[name=resolution]").val('Type resolution of bitmap'); } // проверка поля ввода на недопустимые символы (принимаются только цифры) function isNumberString (InString) { if(InString.length==0) return (false); var RefString="1234567890"; for (Count=0; Count < InString.length; Count++) { TempChar= InString.substring (Count, Count+1); if (RefString.indexOf (TempChar, 0)==-1) return (false); } return (true); } } // очистка поля ввода по клику function clickclear(thisfield, defaulttext) { if (thisfield.value == defaulttext) { thisfield.value = ""; } } // восстановление исходного текста, если ничего не введено function clickrecall(thisfield, defaulttext){ if (thisfield.value == "") { thisfield.value = defaulttext; } } </script>
И HTML-код:
<input type="text" name="resolution" id="resolution" value="Type resolution of bitmap" onclick="clickclear (this, 'Type resolution of bitmap')" onblur="clickrecall (this, 'Type resolution of bitmap')" onchange="link_res_view(this.id)">
You can use this to check if string is a number
ОтветитьУдалить"1" === (new Number("1")).toString()
jcubic, thanks!
Удалить