Элементы, записанные в буфер обмена с помощью 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.

ЧТО Я ПРОБОВАЛ:

  1. Я пыталсяdocument.execCommand('copy'), и ничего не изменилось.
  2. Я новичок в этом API, я поискал в https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/clipboard и не смог этого понять.

Почему это? Что я пропустил? Если HTML(а не простой текст) является причиной того, что он не работает в nodepad.exe, почему Intellij Idea тоже не может их распознать?

Нужна помощь, сексуальные ребята!

0 ответов

Другие вопросы по тегам