Frage

Ich habe eine XULRunner-Anwendung, die Bilddaten in die Zwischenablage kopieren muss. Ich habe herausgefunden, wie Text in die Zwischenablage zu kopieren zu handhaben, und ich kann PNG-Daten aus der Zwischenablage einfügen. Was ich kann nicht herausfinden, wie Daten aus einer Daten URL in die Zwischenablage zu bekommen, so dass sie in andere Anwendungen eingefügt werden kann.

Dies ist der Code, den ich verwende, um Text zu kopieren (na ja, 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);

Und, wie gesagt, die Daten, die ich eine PNG als Daten URL zu übertragen bin versucht. Also suche ich nach dem Äquivalent zu der oben, dass ermöglicht es, beispielsweise Paint.NET meine App Daten einfügen.

War es hilfreich?

Lösung

Hier ist eine Abhilfe, die ich am Ende mit, dass das Problem ziemlich gut löst. Die Variable dataURL wird das Bild, das ich versuche, in die Zwischenablage in erster Linie zu erhalten.

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

Das kopiert das Bild in die Zwischenablage als 'image / jpg'.

Andere Tipps

Neal Deakin hat einen Artikel über die Zwischenablage in xulrunner manipulieren. Ich bin mir nicht sicher, ob es Ihre Frage ausdrücklich beantwortet, aber es ist auf jeden Fall einen Besuch wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top