Ниже приведен фрагмент демонстрации для обработки события вставки документа, отображения информации о вставленном элементе
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<h3>Paste file</h3>
<div id="out">
</div>
<script>
var $log = window.out;
function log(s) {
$log.innerHTML += `<div>${s}</div>`
}
document.addEventListener('paste', function (e) {
const data = (e.originalEvent || e).clipboardData;
log(`Text ${data.getData('text')}`);
Array.from(data.items)
.forEach((item, i) => {
let file = item.getAsFile() || {};
console.log(item.getAsFile())
log(`Item[${i}] type=${item.type} kind=${item.kind} getAsFile=${item.getAsFile()} file.name=${file.name} file.type=${file.type} file.size=${file.size}`);
})
})
</script>
</body>
</html>
Но можно получить только файл изображения, а тип файла неправильный, всегда возвращайте image/png
даже когда я вставляю файл jpg.
Когда я вставляю некоторые файлы другие типы файлов, такие как hello.txt
, getAsFile
вернут null
, как я могу обработать другой тип файла вставки?
Мой журнал похож на этот под macos chrome 79.0.3945.130
Text back.jpg
Item[0] type=text/plain kind=string getAsFile=null file.name=undefined file.type=undefined file.size=undefined
Item[1] type=image/png kind=file getAsFile=[object File] file.name=image.png file.type=image/png file.size=6232743
Text hello.txt
Item[0] type=text/plain kind=string getAsFile=null file.name=undefined file.type=undefined file.size=undefined
Item[1] type=image/png kind=file getAsFile=null file.name=undefined file.type=undefined file.size=undefined