>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Сграбить js картинку из DOM http://forum.mozilla-russia.org/viewtopic.php?id=56946 |
Michaele > 08-11-2012 16:44:53 |
Друзья, подскажите, есть ли дополнение, которое пнутое бы из обезьяннего user script (это важно) умело бы сграбить картинку из DOM. Повторное обращение к srс не катит, так как контент счетчика уже в ответ летит совсем другой. Вроде простая вещь, а упёрся и никак... |
Lex1 > 08-11-2012 23:17:38 |
Домен другой? Иначе просто canvas.toDataURL(). |
SunnyDay > 09-11-2012 12:14:53 |
Выделить код Код:... <!-- где-то в твоём XUL --> <html:canvas id="xcanvas" style="display:none;" width="600" height="400"/> <!-- усё --> ... глобальную позицию можно вычислить следущей ф-ей Выделить код Код:function elGlobalPos(element, brel) { var offsetLeft=0; var offsetTop=0; do { if (brel != undefined && element == brel) break; offsetLeft += element.offsetLeft; offsetTop += element.offsetTop; }while (element = element.offsetParent); var ret= new Object(); ret.x=offsetLeft; ret.y=offsetTop; return ret; }; Выделить код Код://.. где-то в твоём жаваскрипте //target_document - документ, в котором находится картинка с id=capcha var some_dom_img_element = target_document.getElementById('capcha'); var pos = elGlobalPos(some_dom_img_element); //получаем глоб-позицию нужного элемента var width = some_dom_img_element.getAttribute('width'); var height = some_dom_img_element.getAttribute('height'); var canvas = document.getElementById("xcanvas"); //созданная в XUL-е канва var ctx = canvas.getContext("2d"); //скриншотим нужную область ctx.drawWindow(target_document.defaultView, pos.x, pos.y, width, height, "rgb(255,255,255)"); imgdata = ctx.getImageData(0, 0, width, height); в итоге в переменной imgdata получаем пикселы изображения. |
Michaele > 09-11-2012 13:44:52 |
SunnyDay, круто, буду разбираться, а работа с canvas в таком варианте не вызовет проблем с секурностью? В случает с созданием элемента из js получилось именно так... |
SunnyDay > 09-11-2012 13:50:19 |
Именно с методом drawWindow она прозрачна мало того для секьюрности фаерфокса, так и в target-документе нельзя отловить, что ты забираешь скриншот с документа. |