Да, вы можете:
- Записывать данные в буфер обмена, вставленные на веб-страницу
- Загружать указанные данные куда-нибудь через HTTP
- Отображать указанные данные какизображение на вашей веб-странице
Чтобы получить данные в буфере обмена, вы присоединяете прослушиватель событий для типа события «вставить».Событие генерируется в активном элементе документа и всплывает вверх по иерархии элементов к окну документа.
Объект ClipboardEvent
, который передается прослушивателем событий, позволит вам получить фактические данные вбуфер обмена, текст и / или изображение:
addEventListener("paste", ev => {
for(const item of ev.clipboardData.items) { /// Clipboard may contain multiple elements of different type -- text, image, etc
if(item.type.startsWith("image/")) { /// We are only interested in clipboard data that is an image
/// Do something with the data, image available as `item.getAsFile()`
}
}
});
Данные изображения будут доступны с item.getAsFile()
, File
(подкласс Blob
).Вы можете загрузить BLOB-объект тривиально:
var xhr = new XMLHttpRequest();
xhr.open("PUT", "http://example.com");
xhr.send(item.getAsFile()); /// Send the image with HTTP somewhere
Вы также можете отобразить вставленное изображение, предполагая, что в вашем документе есть <img id="foobar">
:
document.getElementById("foobar").src = URL.createObjectURL(item.getAsFile());