從 CKEDITOR 獲取純文本時踩到的坑

背景

在作項目時須要作字符長度的驗證,須要獲取 CKEDITOR 中的純文本。html

因爲 CKEDITOR 是富文本編輯器,直接用 CKEDITOR.instances.editor.getData() 獲得的是含有 html 標籤的內容。可是驗證字符長度並不能包含 html 標籤,須要獲取純文本。編輯器

CKEDITOR 提供了 getText 的方法用於獲取純文本,但是獲得的倒是整個 body 標籤內的內容,網上搜索了一下大多提供的方法都是同樣。起初還覺得是版本緣由,API 被廢棄了,到官網一查文檔發現並非。後來偶然中發現,緣由是由於我用的是 inline 模式,而非 stand 模式。code

解決

若是是 stand 模式,可使用 CKEDITOR.instances.editor.document.getBody().getText() 方法獲取純文本。htm

若是是 inline 模式,使用 CKEDITOR.instances.editor.document.getBody().getText() 獲得的則是整個網頁 body 內的內容。inline 模式應使用 CKEDITOR.instances.editor.container.getText() 方法。文檔

緣由

當 stand 模式的實現方式 iframedocument 屬性引用的是 iframegetbody 後獲得的是 iframe 中的內容,天然是咱們想要的。get

而 inline 則不是,是用 div 包裹內容,document 屬性所引用的是 div 的父 document,也即整個文檔。因此當 inline 模式時應使用 container 屬性。iframe

相關文章
相關標籤/搜索