如何在XUL应用程序中将图像数据复制到剪贴板?
时间:2020-03-05 18:54:49 来源:igfitidea点击:
我有一个XULRunner应用程序,需要将图像数据复制到剪贴板。我已经弄清楚了如何处理将文本复制到剪贴板的方法,并且可以从剪贴板粘贴PNG数据。我不知道如何将数据从数据URL放入剪贴板,以便可以将其粘贴到其他应用程序中。
这是我用来复制文本的代码(嗯,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粘贴我的应用程序的数据。
解决方案
回答
Neal Deakin在xulrunner中有一篇关于操纵剪贴板的文章。我不确定它是否能具体回答问题,但是绝对值得一试。
回答
这是我最终使用的变通办法,可以很好地解决该问题。变量" 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); }
这会将图像作为"图像/ jpg"复制到剪贴板。