Question

I am building a xpcom component with JS. I have got the clipboard data in JS, when the data type is image/png, I want to get its base64 string, my code is:

        ......
        trans.addDataFlavor('image/png');
        clipboard.getData(trans, Services.clipboard.kGlobalClipboard);
        trans.getTransferData('image/png', str, strLength);
        let mw = Services.wm.getMostRecentWindow("navigator:browser");

        data.data = str.value.QueryInterface(Ci.nsISupportsCString).data;
        data.data = mw.btoa(data.data);
        ...

I can get the base64 string under Linux, but when I run my code in windows, I got an error: NS_NOINTERFACE: Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsISupports.QueryInterface]

data.data = str.value.QueryInterface(Ci.nsISupportsCString).data; I do not konw how the get the base64 string of the image data in my xpcom component, who can give me an answer?

Was it helpful?

Solution

Apparently images are stored to clipboard differently across platforms. Check how Jetpack reads them.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top