2008-09-16 23 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

相關問題