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

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

Выделить код

Код:

...
<!-- где-то в твоём 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, круто, буду разбираться, а работа с canvas в таком варианте не вызовет проблем с секурностью? В случает с созданием элемента из js получилось именно так...

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