Question

J'ai une application XULRunner qui doit copier des données d'image dans le presse-papiers. J'ai compris comment gérer la copie de texte dans le Presse-papiers et je peux coller des données PNG à partir du Presse-papiers. Ce que je ne peux pas comprendre, c'est comment obtenir des données d'une URL de données dans le presse-papiers afin de pouvoir les coller dans d'autres applications.

C'est le code que j'utilise pour copier du texte (enfin, 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);

Et, comme je l'ai dit, les données que je tente de transférer sont des PNG en tant qu'URL de données. Je cherche donc l’équivalent de ce qui précède qui permettra, par exemple: Paint.NET pour coller les données de mon application.

Était-ce utile?

La solution

Voici une solution de contournement que j'ai finalement utilisée qui résout assez bien le problème. La variable dataURL est l'image que j'essayais d'obtenir dans le presse-papiers.

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

Cela copie l'image dans le Presse-papiers en tant que "image / jpg".

Autres conseils

Neal Deakin a publié un article sur la manipulation du presse-papiers dans xulrunner. Je ne sais pas si cela répond précisément à votre question, mais cela vaut vraiment la peine de vérifier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top