editorCtx.insertImage 插入图片,小程序会有多个<p><br></p>标签
有没用办法解决这个问题啊?
用editorCtx.setContents 它的光标又不能自定义
editorCtx.insertImage 插入图片,小程序会有多个<p><br></p>标签
有没用办法解决这个问题啊?
用editorCtx.setContents 它的光标又不能自定义
该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询
该问题源于微信小程序富文本编辑器的特性:当插入图片时,编辑器会自动添加<p><br></p>作为占位符,这是平台底层实现机制导致的(参考小程序平台兼容问题)。
解决方案:
插入后清理内容
调用insertImage后,立即通过editorCtx.getContents获取delta格式内容,遍历删除多余的空段落节点(如连续{type: 'p', children: [{text: ''}]}结构),再通过editorCtx.setContents重设内容。虽然setContents会重置光标,但可通过记录插入位置索引并在清理后调用editorCtx.setSelection恢复光标位置。
优先使用delta操作
避免直接操作HTML,改用delta格式插入图片(示例):
editorCtx.insertImage({
src: '图片地址',
// 其他参数...
success: () => {
editorCtx.getContents({
success: (res) => {
// 清理res.delta.ops中多余的空段落
const cleanedDelta = cleanEmptyParagraphs(res.delta);
editorCtx.setContents(cleanedDelta);
}
});
}
});
其中cleanEmptyParagraphs函数需自行实现过滤逻辑。
注意事项
<div>等标签会自动转为<p>(见支持的标签文档),这是正常行为。 建议结合editorContext.insertImage文档进行调试,重点处理delta数据结构而非HTML字符串。
8***@qq.com (作者)
2025-12-24 09:02
DCloud_UNI_JBB
试试原生微信小程序这样写是否生效
2025-12-24 09:31
8***@qq.com (作者)
回复 DCloud_UNI_JBB: 能生效,如果你选择一张图片会加一个换行的标签
2025-12-24 09:57
DCloud_UNI_JBB
回复 8***@qq.com: 发一下你写的uniapp的代码和原生微信的代码
54 分钟前