2008-09-16 7 views
3

Ich habe eine XULRunner-Anwendung, die Bilddaten in die Zwischenablage kopieren muss. Ich habe herausgefunden, wie man Text in die Zwischenablage kopieren kann, und ich kann PNG-Daten aus der Zwischenablage einfügen. Was ich nicht herausfinden kann, ist, wie man Daten von einer Daten-URL in die Zwischenablage holt, damit sie in andere Anwendungen eingefügt werden kann.Wie kopiere ich Bilddaten in die Zwischenablage in meiner XUL-Anwendung?

Dies ist der Code, den ich Text kopieren verwenden (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. Ich suche also nach dem Äquivalent zu dem obigen, das z.B. Paint.NET zum Einfügen der Daten meiner App.

Antwort

3

Hier ist ein Workaround, den ich am Ende verwendet habe, der das Problem ziemlich gut löst. Die Variable dataURL ist das Bild, das ich zuerst in die Zwischenablage kopieren wollte.

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 als 'image/jpg' in die Zwischenablage.

+0

Danke für das Teilen mit uns Joel! +1 – pc1oad1etter

2

Neal Deakin hat eine article on manipulating the clipboard in Xulrunner. Ich bin mir nicht sicher, ob es Ihre Frage spezifisch beantwortet, aber es ist definitiv einen Besuch wert.

+0

Das ist ein wirklich guter Artikel, in der Tat ist es die Grundlage für den obigen Code. Leider geht es nicht darum, Binärdaten in die Zwischenablage zu bekommen. Danke für die Antwort! –

+0

Doh! #xulrunner? – pc1oad1etter

+0

Was ist #xulrunner? –

Verwandte Themen