CKEditor 4增强图片插件无法识别JSON中alt文本的技术求助
解决CKEditor 4增强图片插件读取JSON中alt文本的问题
我之前也碰到过一模一样的情况,CKEditor 4的增强图片插件(Image2)确实不会自动识别服务器返回JSON里的alt字段来填充图片的alt属性,不过咱们可以通过两种简单的方式搞定这个问题:
一、直接监听上传事件手动处理alt值
首先明确:CKEditor 4并没有强制要求特定的JSON字段名来传递alt文本,但插件默认的上传成功逻辑只处理了url字段。我们只需要在上传完成后,手动把返回的alt值赋值给图片元素就行。
方法1:针对Image2插件的专属事件
如果你的编辑器用的是官方的Image2增强图片插件,直接在初始化配置里加一段事件监听:
CKEDITOR.replace('你的编辑器ID', { // 保留你原有的其他配置,比如上传路径、插件列表等 plugins: 'image2,uploadimage,...', on: { imageUploaded: function(evt) { // 解析服务器返回的JSON数据 var responseData = evt.data.responseJson; // 如果返回了alt文本,就把它赋值给刚插入的图片 if (responseData && responseData.alt) { evt.data.image.setAttribute('alt', responseData.alt); } } } });
方法2:通用的fileTools上传事件
如果你的上传逻辑是基于CKEditor的fileTools模块(大多数上传场景都是),可以用这个更通用的事件:
CKEDITOR.replace('你的编辑器ID', { // 其他配置... fileTools_uploaded: function(evt) { var responseData = evt.data.responseJson; if (responseData && responseData.alt) { // 根据返回的url定位到刚插入的图片 var targetImg = evt.data.editor.document.findOne('img[src="' + responseData.url + '"]'); if (targetImg) { targetImg.setAttribute('alt', responseData.alt); } } } });
二、先确认你的服务器端JSON格式
从你贴的Java代码来看,生成的JSON结构是{"url": "预览地址", "alt": "你的alt文本"},这完全没问题,不需要调整字段名(除非你自己想换,但完全没必要)。
为啥默认不识别alt?
CKEditor 4的增强图片插件默认只聚焦图片URL,因为它默认认为alt文本是需要用户手动输入的内容,但如果我们是从服务器端获取已有的图片元数据,就需要手动补上这个赋值逻辑。
内容的提问来源于stack exchange,提问作者Laurenz Honauer
相关产品推荐
相关产品推荐

