Convertir Blob a cadena binaria sincrónicamente
Estoy tratando de poner la imagen en el portapapeles cuando el usuario copia la selección del lienzo:
Así que pensé que la forma correcta sería convertir el lienzo tu dataURL, dataURL a blob y blob a cadena binaria.
Teóricamente debería ser posible omitir el blob, pero no sé por qué.
Entonces esto es lo que hice:
function copy(event) {
console.log("copy");
console.log(event);
//Get DataTransfer object
var items = (event.clipboardData || event.originalEvent.clipboardData);
//Canvas to blob
var blob = Blob.fromDataURL(_this.editor.selection.getSelectedImage().toDataURL("image/png"));
//File reader to convert blob to binary string
var reader = new FileReader();
//File reader is for some reason asynchronous
reader.onloadend = function () {
items.setData(reader.result, "image/png");
}
//This starts the conversion
reader.readAsBinaryString(blob);
//Prevent default copy operation
event.preventDefault();
event.cancelBubble = true;
return false;
}
div.addEventListener('copy', copy);
Pero cuando elDataTransfer
objeto se utiliza fuera de lapaste
hilo del eventosetData
ya no tiene ninguna posibilidad de hacer efecto.
¿Cómo puedo hacer la conversión en el mismo hilo de función?