#javascript #angular #clipboard #copy-paste #clipboard.js
Вопрос:
Мне нужно скопировать как текст, так и изображение в один клик. Я попробовал код ниже. Я нажал и вставил только то, что я получаю «clip_message».
Мой HTML:
<button id="copy" onclick="writeClipImg()"><strong>Copy</strong></button>
Мой код JS
async function writeClipImg() {
try {
const imgURL = 'https://luanedcosta.github.io/copy-image-clipboard/static/media/SecondImage.ef100414.png';
const data = await fetch(imgURL);
const blob = await data.blob();
const blob2 = new Blob(['clip_message'], {type: 'text/plain'});
await navigator.clipboard.writeText('swe');
await navigator.clipboard.write([
new ClipboardItem({
'text/plain': blob2,
'image/png': blob
})
]);
console.log('Fetched image copied.');
} catch(err) {
console.error(err.name, err.message);
}
}
На самом деле я пробовал в JS. Если у меня есть решение в Angular, это тоже лучше.
Пожалуйста, помогите мне скопировать оба в один клик. Спасибо
Ответ №1:
Вероятно, мы не сможем скопировать как изображение, так и текст за этот промежуток времени.
Согласно Clipboard.write()
документации:
Примечание: Вы можете передавать только один элемент буфера обмена за раз.
Я попытался передать массив cliboard.write
методу, но он выдает следующую ошибку:
(индекс):29 Не реализована поддержка NotAllowedError для нескольких элементов ClipboardItems.
Кстати, вы также можете проверить этот пример.
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button onclick="copy()">Copy Button</button>
<script>
async function copy(){
try {
const imgURL = 'https://luanedcosta.github.io/copy-image-clipboard/static/media/SecondImage.ef100414.png';
const data = await fetch(imgURL);
const blob = await data.blob();
const blob2 = new Blob(['clip_message'], {type: 'text/plain'});
// await navigator.clipboard.writeText('swe');
await navigator.clipboard.write([
new ClipboardItem({
[blob.type]: blob
}),
new ClipboardItem({
'text/plain': blob2
})
]);
console.log('Fetched image copied.');
} catch(err) {
console.error(err.name, err.message);
}
}
</script>
</body>
</html>
Комментарии:
1. Я знаю, что есть проблема. вот почему я обратился сюда, чтобы добиться этого.