我用的是 Quill.js 做富文本,图片上传到服务器返回了 URL,但插入后编辑器里显示的是一个空白占位或者直接不显示,控制台也没报错。
我试过用 quill.insertEmbed 插入图片,代码大概是这样:
const range = quill.getSelection();
quill.insertEmbed(range.index, 'image', imageUrl);
但有时候能显示,有时候不行,尤其是从接口异步拿到 URL 再插入的时候。是不是我插入的时机有问题?还是需要额外配置什么?
insertEmbed方法在异步操作时确实需要注意确保编辑器处于可编辑状态,并且 URL 已经正确获取。首先,确保你的图片上传成功并且返回的 URL 是正确的。有时候网络延迟或者服务器端处理可能会导致 URL 返回不及时。
其次,检查一下你的代码执行顺序。如果图片上传是异步的,你需要确保在图片 URL 获取成功后再调用
insertEmbed方法。可以试试在上传完成的回调里插入图片,确保编辑器当前选区有效。最后,确认一下 Quill 是否初始化完成。如果 Quill 还没有完全加载好就尝试插入内容,可能会导致一些奇怪的问题。
这里有个简单的示例,假设你使用的是
fetch进行图片上传:这段代码确保了图片上传完成后才会尝试插入到 Quill 编辑器中,并且检查了当前是否有有效的选区。希望这能解决你的问题。