百度UEditor修改右下角统计字数包含html样式
百度UEditor修改右下角统计字数 不知道你有没有遇到过这种情况:在用百度UEditor编辑器的时候,右下角那个字数统计,显示的数字总感觉对不上?明明前台看到的文字没那么多,为啥统计出来的数却大了不少? 其实道理很简单。这个统计功能默认计算的是你编辑区内“所见即所得”的文字个数。但问题来了,当你点
百度UEditor修改右下角统计字数
不知道你有没有遇到过这种情况:在用百度UEditor编辑器的时候,右下角那个字数统计,显示的数字总感觉对不上?明明前台看到的文字没那么多,为啥统计出来的数却大了不少?
其实道理很简单。这个统计功能默认计算的是你编辑区内“所见即所得”的文字个数。但问题来了,当你点击保存时,系统实际存储的是包含所有HTML标签的完整代码。这样一来,前后统计的口径就对不上了——前端显示的是纯文字数,后端保存的却是带了“包装”的总字符数。显然,为了管理后台的准确性,我们需要让前端的统计也反映这个“总字符数”。
核心修改步骤
要解决这个问题,关键得修改编辑器底层的一个计数方法。不用慌,调整起来并不复杂。
/***
* 计算编辑器当前内容的长度
* @name getContentLength
* @grammar editor.getContentLength(ingoneHtml,tagNames) =>
* @example
* editor.getLang(true)
*
* 2013年7月1日16:53:15 注释掉的内容为 去除html标记后的内容数,实际入库是算上html标签和文字的 所以统计字数以getContents为准
*/
getContentLength: function (ingoneHtml, tagNames) {
var count = this.getContent(false,false,true).length;
/*if (ingoneHtml) {
tagNames = (tagNames || []).concat([ 'hr', 'img', 'iframe']);
count = this.getContentTxt().replace(/[\t\r\n]+/g, '').length;
for (var i = 0, ci; ci = tagNames[i++];) {
count += this.document.getElementsByTagName(ci).length;
}
}*/
return count;
},
看上方的代码块,重点就在中间那一段被注释掉的条件判断语句。原来的逻辑是:如果要求忽略HTML(ingoneHtml为true),就去计算纯文本长度,再补上一些特定标签的个数。但正如代码注释里老早就说明的——实际入库是算上HTML标签和文字的。所以,最直接的办法就是让这个函数始终返回包含标签的总长度。
那么,具体怎么操作呢?找到项目里的 ueditor.all.js 这个核心文件,定位到第4944行到4951行(大致在这个区间,不同版本可能稍有出入)。你会发现和上面代码块中类似的一段逻辑,果断把那个if判断语句整个注释掉,就像示例中那样。修改完成后保存,刷新页面看看,右下角的字数应该就已经是和保存后字符数一致的总数了。
话说回来,这种设计其实挺合理的,毕竟后端数据库存储和内容校验,都是以包含格式的总字符数为准。这么一改,前后端的数据口径就统一了,管理起来也省心不少。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















