在contenteditable="true"的编辑框内使用shift+enter换行之后,结构混乱 怎么解决?
在contenteditable="true"的编辑框内使用shift+enter换行之后,结构混乱 怎么解决 求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#editable {
width: 300px;
height: 300px;
border: 1px solid #ccc;
padding: 10px;
}
</style>
</head>
<body>
<div id="editable" contenteditable="true" oninput="inputText()" onkeydown="keyDown(event)">
</div>
<script>
function keyDown(event) {
document.execCommand('formatblock', false, '<p>');
}
function inputText() {
// 把一段文字用 p 标签包裹起来
if (document.getSelection().focusNode.data !== undefined) {
// 当前所在元素
var currentElement = document.getSelection().focusNode.parentNode;
// 父元素内容
console.log(currentElement.innerHTML);
}
}
</script>
</body>
</html>
回复
1个回答

test
2024-06-23
试了一下,这样可以
function keyDown (event) {
if (event.shiftKey && event.keyCode === 13) {
event.preventDefault();
document.execCommand('insertParagraph');
return false;
}
document.execCommand('formatblock', false, '<p>');
}
仅在 Chrome 120.0.6099.201 (Official Build) (64-bit) (cohort: Control) 中进行测试。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容