Как скопировать данные изображения в буфер обмена в моем приложении XUL? - PullRequest
3 голосов
/ 16 сентября 2008

У меня есть приложение XULRunner, которому нужно скопировать данные изображения в буфер обмена. Я понял, как обрабатывать копирование текста в буфер обмена, и я могу вставить данные PNG из буфера обмена. Что я не могу понять, так это как получить данные из URL-адреса данных в буфер обмена, чтобы их можно было вставить в другие приложения.

Это код, который я использую для копирования текста (ну, XUL):

var transferObject=Components.classes["@mozilla.org/widget/transferable;1"].
    createInstance(Components.interfaces.nsITransferable);

var stringWrapper=Components.classes["@mozilla.org/supports-string;1"].
    createInstance(Components.interfaces.nsISupportsString);

var systemClipboard=Components.classes["@mozilla.org/widget/clipboard;1"].
    createInstance(Components.interfaces.nsIClipboard);

var objToSerialize=aDOMNode;

transferObject.addDataFlavor("text/xul");

var xmls=new XMLSerializer();
var serializedObj=xmls.serializeToString(objToSerialize);

stringWrapper.data=serializedObj;

transferObject.setTransferData("text/xul",stringWrapper,serializedObj.length*2);

И, как я уже сказал, данные, которые я пытаюсь передать, представляют собой PNG как URL-адрес данных. Поэтому я ищу эквивалент вышеупомянутого, который позволит, например, Paint.NET для вставки данных моего приложения.

Ответы [ 2 ]

3 голосов
/ 25 сентября 2008

Вот обходной путь, который я в итоге использовал, который решает проблему довольно хорошо. Переменная dataURL - это изображение, которое я пытался сначала получить в буфер обмена.

var newImg=document.createElement('img');
newImg.src=dataURL;

document.popupNode=newImg;

var command='cmd_copyImageContents'

var controller=document.commandDispatcher.getControllerForCommand(command);

if(controller && controller.isCommandEnabled(command)){
    controller.doCommand(command);
}

Копирует изображение в буфер обмена как 'image / jpg'.

2 голосов
/ 16 сентября 2008

У Нила Дикина есть статья по работе с буфером обмена в xulrunner. Я не уверен, что он отвечает конкретно на ваш вопрос, но это определенно стоит проверить.

...