Элементы, записанные в буфер обмена с помощью Navigator.clipboard.write(), не удалось вставить правильно.
Вот что я хотел сделать: пользователь выбирает контент на веб-странице, контент автоматически копируется в буфер обмена.
КОД:
function createHtmlBlob(target) {
return new Blob([target], {type: "text/html"});
}
async function writeDataToClipboard(blob) {
if (navigator.clipboard && navigator.clipboard.write) {
try {
const item = new ClipboardItem({
[blob.type]: blob,
});
await navigator.clipboard.write([item]);
} catch (error) {
console.error("failed to copy", error);
}
}
}
function copy() {
writeDataToClipboard(createHtmlBlob(someHtmlString))
}
someHtmlString
как
this is a text
<p>this is a paragraph</p>
<ul><li>xxx</li></ul>
ПРОБЛЕМА В:
Я мог бы вставить записи, записанные в буфер обмена, в Microsoft Word (Windows) или LibreOffice Writer (Linux), нажав CTRL V, но я не могу вставить их в notepad.exe в Windows или Intellij Idea.
ЧТО Я ПРОБОВАЛ:
- Я пытался
document.execCommand('copy')
, и ничего не изменилось. - Я новичок в этом API, я поискал в https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/clipboard и не смог этого понять.
Почему это? Что я пропустил? Если HTML(а не простой текст) является причиной того, что он не работает в nodepad.exe, почему Intellij Idea тоже не может их распознать?
Нужна помощь, сексуальные ребята!