关于富文本编辑器contenteditable=”true”的巨坑

1.range光标

不能使用div的点击 一定要用img 因为div的点击会影响编辑器的光标获取

2.关于点击更新光标selection的问题

这里可能是触及到dom的方法周期,foucs会在input之前,也就是说先focus更新之后,在input的时候会更新光标的dom位置,所以获取光标处于的dom节点,直接就用input来监听就可以了

// 点击监听
    test () {
        let node = window.getSelection().anchorNode
        console.log(node.nodeType, node.DOCUMENT_NODE, node.classList, node.parentNode)
    },

3.在监听滚动条的时候

如果使用

window.addEventListener('scroll', this.handleScroll)

没用

就换为当前dom来监听,这个可能是因为你禁用了body的overflow

document.getElementById('write').addEventListener('scroll', this.handleScroll)

最后记得要销毁这个

destroyed () {
    document.getElementById('write').removeEventListener('scroll', this.handleScroll)
  }

4.最后,放上我的成果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: contenteditable=true是一种HTML属性,允许用户在网页上编辑和修改文本内容。这个属性可以应用于任何HTML元素,包括段落、标题、表格、列表等等。通过设置contenteditable=true,用户可以直接在网页上进行编辑,而不需要使用外部编辑器或者其他工具。这个属性在一些网站上被广泛使用,例如博客、社交网络、在线文档等等。 ### 回答2: contenteditable=true是一种HTML属性,用于设置网页中的元素是否可编辑。如果将该属性设置为true,用户可以在浏览器中直接编辑网页中的文本、图像和其他元素。 使用contenteditable=true可以方便用户直接在网页上进行修改、编辑,而不需要再使用外部编辑器。这种方式通常用于Web应用程序中,用户可以自由编辑自己的信息,并实时保存修改结果。此外,contenteditable=true还可以用于创建在线富文本编辑器,以提供更完整的编辑功能。 但是,使用contenteditable=true也存在一些问题。首先,内容可编辑后会增加需要处理的交互和验证逻辑,因此需要反复测试和优化。其次,由于contenteditable=true直接允许用户在网页上进行修改操作,因此可能会出现不合法的修改,如删除关键信息、非法内容等等。为此,需要对用户输入进行限制和监测,以预防此类问题的出现。 总的来说,contenteditable=true是一种方便的HTML属性,可以为用户提供更好的编辑体验和操作便利性。但同时也需要进行完善的验证和限制,以保障网页的安全性和正确性。 ### 回答3: contenteditable=true是一种HTML特性,允许将网页上的任何元素(比如文本、图片、表格等)设为可编辑状态。它使得用户可以直接在网页上编辑内容,像在Word文档中一样方便。 使用contenteditable=true的好处是可以极大地提高用户的编辑效率,比如在撰写长篇文章或者编辑表格时。用户不需要再复制粘贴内容到其他软件中进行编辑,而是可以直接在网页上进行操作。此外,使用contenteditable=true可以让用户更好地掌控网页内容的布局和格式,很大程度上可以提升用户体验。 尽管contenteditable=true提供了方便的编辑功能,但是它也存在一些问题。首先,由于它允许用户随意编辑网页内容,这可能导致网页的格式混乱不堪、样式失调甚至内容错误。其次,使用contenteditable=true可能会使得网页的安全性降低,因为用户可以随意修改网页内容,这可能导致一些潜在的安全隐患。 因此,在使用contenteditable=true时,需要注意一些事项。比如,要对输入内容进行验证和过滤,以防止恶意的、不符合规范的输入。此外,还需要在发现有人在不合理地修改网页内容时,做出适当的处理,比如禁止该用户进一步的编辑等。 总之,contenteditable=true是一个方便快捷的特性,可以提升用户的编辑效率,但是需要注意潜在的安全问题。在使用时,需要合理斟酌。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值