contenteditable 属性真的挺魔幻的,一开始以为就是个简单的可编辑区域,结果实际用起来全是坑。光标乱跳、换行处理诡异、回车生成 div 还是 p 根本控制不住……最离谱的是在不同浏览器里表现还不一样,Chrome 里好好的,到了 Safari 跟抽风一样。后来发现得手动拦截很多默认行为,还得监听 input 和 keydown 做补偿。不过搞明白之后,配合 Selection 和 Range API 确实能玩出花来,比如高亮关键词、插入自定义节点啥的。现在终于理解为啥那些富文本编辑器框架都绕开原生 contenteditable 自己搞模型了……唉,但光是这基础就折腾了一礼拜,真是又爱又恨啊。
登录/注册