XUL 응용 프로그램의 클립보드에 이미지 데이터를 어떻게 복사합니까?

StackOverflow https://stackoverflow.com/questions/68103

문제

이미지 데이터를 클립보드에 복사해야 하는 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에서.귀하의 질문에 구체적으로 답변이 되었는지는 확실하지 않지만 확인해 볼 가치가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top