XUL 응용 프로그램의 클립보드에 이미지 데이터를 어떻게 복사합니까?
-
09-06-2019 - |
문제
이미지 데이터를 클립보드에 복사해야 하는 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);
그리고 제가 말했듯이 제가 전송하려는 데이터는 데이터 URL인 PNG입니다.그래서 나는 위와 같은 것을 허용하는 것을 찾고 있습니다.Paint.NET을 사용하여 내 앱의 데이터를 붙여넣습니다.
해결책
다음은 문제를 꽤 잘 해결하는 해결 방법입니다.변수 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'로 복사됩니다.
다른 팁
닐 디킨은 클립보드 조작에 관한 기사 xulrunner에서.귀하의 질문에 구체적으로 답변이 되었는지는 확실하지 않지만 확인해 볼 가치가 있습니다.
제휴하지 않습니다 StackOverflow