TinyMCE 是一个流行的富文本编辑器(WYSIWYG),它允许用户在网页上创建和编辑格式化的内容。获取纯文本是指从 TinyMCE 编辑器中提取去除所有 HTML 标签和格式的纯文本内容。
TinyMCE 提供了几种获取纯文本的方式:
// 获取编辑器实例
var editor = tinymce.get('editor-id');
// 方法1: 使用getContent()并指定text格式
var plainText = editor.getContent({format: 'text'});
// 方法2: 使用getBody().textContent
var plainText = editor.getBody().textContent;
// 方法3: 使用DOM API
var plainText = editor.getDoc().body.innerText;
如果需要更彻底地去除所有HTML标签和特殊字符:
function getPlainText(html) {
// 替换HTML标签
var plainText = html.replace(/<[^>]*>/g, '');
// 替换HTML实体
plainText = plainText.replace(/ /g, ' ');
plainText = plainText.replace(/&/g, '&');
plainText = plainText.replace(/</g, '<');
plainText = plainText.replace(/>/g, '>');
return plainText;
}
var htmlContent = editor.getContent();
var plainText = getPlainText(htmlContent);
| 方法 | 优点 | 缺点 | 适用场景 | |------|------|------|----------| | getContent({format: 'text'}) | 官方推荐,简单易用 | 可能保留一些空白字符 | 一般纯文本提取 | | getBody().textContent | 性能较好 | 保留换行和缩进 | 需要保留格式的纯文本 | | innerText | 更接近视觉表现 | 性能略差 | 需要精确匹配显示文本 | | 正则处理 | 完全自定义 | 需要处理各种特殊情况 | 需要严格去除所有HTML |
原因:HTML中的
和<br>
等元素被转换为空格或换行。
解决方案:
var text = editor.getContent({format: 'text'})
.replace(/\s+/g, ' ') // 合并多个空格
.trim(); // 去除首尾空格
原因:HTML实体未被正确转换。
解决方案:
function decodeHTMLEntities(text) {
var textArea = document.createElement('textarea');
textArea.innerHTML = text;
return textArea.value;
}
var plainText = decodeHTMLEntities(editor.getContent({format: 'text'}));
解决方案:
// 使用textContent性能更好
var plainText = editor.getBody().textContent;
editor.getContent({format: 'text'})
是最简单可靠的方法innerText
textContent
提高性能没有搜到相关的文章