layedit.getContent() 返回 HTML 字符串,包含、等标签,src为base64或相对路径; getContent()取HTML,getText()取纯文本;需确保编辑器初始化完成后再调用。
layedit.getContent() 返回的是纯文本还是HTML?
默认返回 html 字符串,不是纯文本,也不是 json。这是最常被误解的一点——很多人调用 layedit.getcontent() 后发现内容里有 <p></p>、<img> 标签,以为“出错了”,其实它本来就是设计成输出带标签的 html。
注意:返回值中图片 <img> 的 src 是 base64(如果上传走的是前端转码)或相对路径(如果配置了 uploadImage 并成功上传),不会自动补全为绝对 URL。
为什么有时候 getContent() 拿不到最新输入的内容?
典型原因是编辑器实例没正确绑定,或在 DOM 尚未渲染完成时就调用了方法。Layui 的 layedit 是异步初始化的,必须等 layedit.build() 执行完毕、且编辑器 iframe 已加载完成才能安全取值。
- 确保调用
layedit.getContent(index)时,index是layedit.build()返回的有效编号(整数) - 不要在
$(document).ready()里立刻取值,应放在layedit.build()的回调或后续用户触发事件中(如按钮点击) - 若编辑器放在
display: none的容器里初始化,首次取值可能为空——Layui 1.x 对隐藏容器支持不好,需先 show 再 build,或延迟调用
如何安全地获取并提交 HTML 内容到后端?
直接把 layedit.getContent(index) 的结果发给后端即可,但要注意三件事:
- 前端不做 HTML 过滤(Layui 本身不提供 XSS 过滤),后端必须对
<script></script>、onerror=、javascript:等做严格清洗 - 如果用了图片上传,确认后端能处理 base64 图片(或你已配置
uploadImage并拦截了上传逻辑) - 提交前建议用
$.trim()判断是否为空:if (!$.trim(layedit.getContent(index))) { ... },避免只含空格或换行的“假内容”被提交
示例(配合按钮提交):
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
layui.use('layedit', function(){
var layedit = layui.layedit;
var editIndex = layedit.build('content'); // 假设 textarea#content
$('#submitBtn').on('click', function(){
var html = layedit.getContent(editIndex);
if (!$.trim(html)) {
layer.msg('内容不能为空');
return;
}
$.post('/api/article', { content: html }, function(res){
console.log('提交成功');
});
});
});
getContent() 和 getText() 有什么区别?
layedit.getContent(index) 返回 HTML 字符串;layedit.getText(index) 返回去除所有标签后的纯文本(保留换行,但删掉 <p></p>、<strong></strong> 等所有格式)。
别混淆这两个 API:想存富文本样式就用 getContent;想提取摘要、做搜索关键词匹配、或发短信通知,才用 getText。
另外注意:getText() 不会过滤 script 标签里的文字,也不会还原 base64 图片的 alt 文本——它只是简单地用正则删标签,能力有限。
layedit.sync(index) 把内容同步回原始 textarea,但这个操作是单向的、不改变 getContent() 的行为,仅用于表单原生提交场景。真正要拿 HTML,始终认准 getContent,别绕路。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










