2008-09-16 22 views
3

我有一个需要将图像数据复制到剪贴板的XULRunner应用程序。我已经想出了如何处理复制文本到剪贴板,并且我可以从剪贴板粘贴PNG数据。我无法弄清楚的是如何从数据URL中获取数据到剪贴板,以便将其粘贴到其他应用程序中。如何将图像数据复制到我的XUL应用程序中的剪贴板?

这是我用它来复制文本(当然,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粘贴我的应用程序的数据。

回答

3

下面是我最终使用的解决方法,可以很好地解决问题。变量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

Neal Deakin在xulrunner有一个article on manipulating the clipboard。我不确定它是否会专门回答您的问题,但绝对值得一试。

+0

这是一篇非常好的文章,实际上它是上述代码的基础。不幸的是,它不涉及将二进制数据存入剪贴板。感谢您的回应! – 2008-09-16 18:10:27

+0

Doh! #xulrunner? – pc1oad1etter 2008-09-18 03:29:24

相关问题