contenteditable 中如何阻止默认回车换行行为?
我在做一个富文本编辑器,用的是 contenteditable。现在遇到个问题:用户按回车时会自动插入 <br> 或者新段落,但我希望改成插入自定义的块元素(比如带样式的 div),而不是默认的换行。
我试过监听 keydown 事件然后 preventDefault(),但好像没生效,光标还会跳到下一行。下面是我目前的代码:
document.querySelector('[contenteditable]').addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
e.preventDefault();
// 想在这里插入自定义元素
console.log('拦截回车');
}
});
为什么 preventDefault() 没起作用?是不是还要处理别的事件?
记得把样式改成你需要的样子。这东西调试起来挺烦的,特别是光标定位部分,有时候会有点小问题,慢慢调吧。