从 CKEDITOR 获取纯文本时踩到的坑

背景

在做项目时需要做字符长度的验证,需要获取 CKEDITOR 中的纯文本。

由于 CKEDITOR 是富文本编辑器,直接用 CKEDITOR.instances.editor.getData() 得到的是含有 html 标签的内容。但是验证字符长度并不能包含 html 标签,需要获取纯文本。

CKEDITOR 提供了 getText 的方法用于获取纯文本,可是得到的却是整个 body 标签内的内容,网上搜索了一下大多提供的方法都是一样。起初还以为是版本原因,API 被废弃了,到官网一查文档发现并不是。后来偶然中发现,原因是因为我用的是 inline 模式,而非 stand 模式。

解决

如果是 stand 模式,可以使用 CKEDITOR.instances.editor.document.getBody().getText() 方法获取纯文本。

如果是 inline 模式,使用 CKEDITOR.instances.editor.document.getBody().getText() 得到的则是整个网页 body 内的内容。inline 模式应使用 CKEDITOR.instances.editor.container.getText() 方法。

原因

当 stand 模式的实现方式 iframedocument 属性引用的是 iframegetbody 后得到的是 iframe 中的内容,自然是我们想要的。

而 inline 则不是,是用 div 包裹内容,document 属性所引用的是 div 的父 document,也即整个文档。所以当 inline 模式时应使用 container 属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值