Pregunta

Tengo una aplicación XULRunner que necesita copiar datos de imágenes al portapapeles.He descubierto cómo manejar la copia de texto en el portapapeles y puedo pegar datos PNG desde el portapapeles.Lo que no puedo entender es cómo obtener datos de una URL de datos en el portapapeles para poder pegarlos en otras aplicaciones.

Este es el código que uso para copiar texto (bueno, 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);

Y, como dije, los datos que intento transferir son un PNG como URL de datos.Entonces estoy buscando el equivalente a lo anterior que permitirá, por ejemplo.Paint.NET para pegar los datos de mi aplicación.

¿Fue útil?

Solución

Aquí hay una solución alternativa que terminé usando y que resuelve el problema bastante bien.La variable dataURL es la imagen que estaba intentando llevar al portapapeles en primer lugar.

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);
}

Eso copia la imagen al portapapeles como una 'imagen/jpg'.

Otros consejos

Neal Deakin tiene un artículo sobre la manipulación del portapapeles en xulrunner.No estoy seguro de si responde específicamente a tu pregunta, pero definitivamente vale la pena echarle un vistazo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top