Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№108-11-2012 16:44:53

Michaele
Участник
 
Группа: Members
Зарегистрирован: 08-11-2012
Сообщений: 2
UA: Firefox 16.0

Сграбить js картинку из DOM

Друзья, подскажите, есть ли дополнение, которое пнутое бы из обезьяннего user script (это важно) умело бы сграбить картинку из DOM. Повторное обращение к srс не катит, так как контент счетчика уже в ответ летит совсем другой. Вроде простая вещь, а упёрся и никак...
графический файл скрина хочу или сохранить на диск или лучше поиметь в виде base64 строки в вызывающем скрипте.

Отсутствует

 

№208-11-2012 23:17:38

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Сграбить js картинку из DOM

Домен другой? Иначе просто canvas.toDataURL().
А впрочем, скрипт для MegaUpload, тот который распознавал капчу, брал картинки, кажется как раз с другого домена с помощью GM_xmlhttpRequest.

Отредактировано Lex1 (08-11-2012 23:23:55)

Отсутствует

 

№309-11-2012 12:14:53

SunnyDay
Участник
 
Группа: Members
Зарегистрирован: 09-07-2009
Сообщений: 44
UA: Firefox 16.0

Re: Сграбить js картинку из DOM

Выделить код

Код:

...
<!-- где-то в твоём 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 получаем пикселы изображения.

Отредактировано SunnyDay (09-11-2012 12:26:54)

Отсутствует

 

№409-11-2012 13:44:52

Michaele
Участник
 
Группа: Members
Зарегистрирован: 08-11-2012
Сообщений: 2
UA: Firefox 16.0

Re: Сграбить js картинку из DOM

SunnyDay, круто, буду разбираться, а работа с canvas в таком варианте не вызовет проблем с секурностью? В случает с созданием элемента из js получилось именно так...

Отсутствует

 

№509-11-2012 13:50:19

SunnyDay
Участник
 
Группа: Members
Зарегистрирован: 09-07-2009
Сообщений: 44
UA: Firefox 16.0

Re: Сграбить js картинку из DOM

Именно с методом drawWindow она прозрачна мало того для секьюрности фаерфокса, так и в target-документе нельзя отловить, что ты забираешь скриншот с документа.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]