<article style="outline: none; overflow-wrap: anywhere" class="min-h-[89px]" contenteditable="true" ref="editBox" id="editBox" @click="editClick" @keyup.enter.exact="handleSend" @paste.prevent="handlePaste" @keydown="editClick" @blur="editClick" ></article>里面粘贴html 文本都不能撤回
时间: 2023-12-05 16:15:35 浏览: 74
确实,在 `<article>` 元素中粘贴 HTML 文本后,使用浏览器的撤销操作无法撤回粘贴的文本。这是因为浏览器在粘贴 HTML 文本时会将其解析为 DOM 结构,并将其插入到 `<article>` 元素中,而浏览器的撤销操作只能撤销对 DOM 结构的更改,而不能撤销对剪贴板内容的更改。
如果您需要支持撤销操作,可以考虑使用 `contenteditable` 属性来实现编辑框,并使用 JavaScript 代码来处理用户输入和撤销操作。例如,您可以使用 `document.execCommand()` 方法来执行撤销操作,如下所示:
```html
<div contenteditable="true" id="editBox"></div>
<script>
const editBox = document.getElementById('editBox');
editBox.addEventListener('keydown', (event) => {
// 按下 Ctrl + Z 执行撤销操作
if (event.ctrlKey && event.key === 'z') {
document.execCommand('undo');
event.preventDefault();
}
});
</script>
```
通过使用 `document.execCommand()` 方法,您可以在 JavaScript 中执行撤销操作,并实现对粘贴的 HTML 文本的撤销操作。
阅读全文