解决kindeditor编辑器因为flash机制导致的图片批量上传按钮看不见的问题

本文介绍了一种解决KindEditor在IE浏览器中上传图片时出现白色显示的问题。通过修改kindeditor-all.js文件中上传图片的object标签设置,实现上传按钮的正常显示。适用于使用KindEditor进行图片上传功能的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

附相关代码

不同的kindeditor代码行数不一定一致,自己搜索对比就行了

第一段 大约在7861附近

/member/shop/setting/diy/static/kindeditor/plugins/multiimage/images/select-files-zh-CN.png
要注意这个静态资源路径,自己根据项目调整即可(select-files-zh-CN.png,注意这个文件名连接符,有的最后是zh_CN.png)

self.div = K(options.container).html([
			'<div class="ke-swfupload">',
			'<div class="ke-swfupload-top" style="position: relative">',
			'<div class="ke-inline-block ke-swfupload-button" style="position: absolute;z-index: 1000;opacity: 0;left: 0px;">',
			'<input type="button" value="Browse" />',
			'</div>',
			'<div style="height:23px;width:72px;float: left;background-image: url('+'/member/shop/setting/diy/static/kindeditor/plugins/multiimage/images/select-files-zh-CN.png'+')"></div>',
			'<div class="ke-inline-block ke-swfupload-desc">' + options.uploadDesc + '</div>',
			'<span class="ke-button-common ke-button-outer ke-swfupload-startupload">',
			'<input type="button" class="ke-button-common ke-button" value="' + options.startButtonValue + '" />',
			'</span>',
			'</div>',
			'<div class="ke-swfupload-body"></div>',
			'</div>'
		].join(''));

第二段,hack IE,大约在8369

return ['<object id="', this.movieName, '"' + classid + ' type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
				'<param name="wmode" value="', this.settings.button_window_mode, '" />',
				'<param name="movie" value="', this.settings.flash_url, '" />',
				'<param name="quality" value="high" />',
				'<param name="menu" value="false" />',
				'<param name="allowScriptAccess" value="always" />',
				'<param name="flashvars" value="' + this.getFlashVars() + '" />',
				'<param name="wmode" value="transparent" />',
				'</object>'].join("");

附:如果有的项目用的min.js,就需要切换回all.js

最重要的就是尽早弃坑。

问题描述

因为flash机制导致浏览器里面默认上传按钮不显示在这里插入图片描述

解决方法如下

在他的kindeditor-all.js文件中,对上传图片的objcet标签的父标签的div设置了绝对定位,又重新做了一个按钮的div,把object标签的父标签div定位到我新做的按钮div上,设置object标签的父标签div的透明度opacity:0,如下图
在这里插入图片描述
在这里插入图片描述
在前台就显示出来了,但在IE浏览器下显示的是白色,如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 替换KindEditor Flash批量上传图片功能为jQuery实现 #### 实现思路 为了将KindEditor编辑器中基于Flash批量上传图片功能替换为jQuery实现,主要涉及前端文件选择、预览以及通过Ajax向服务器发送请求的功能。这仅提升了浏览器兼容性和用户体验,还减少了对插件依赖。 #### 前端HTML结构调整 移除原有与Flash有关的部分,在页面适当位置加入用于触发文件选择对话框的按钮和展示已选图片缩略图区域: ```html <!-- 文件输入控件 --> <input type="file" id="uploadImages" multiple style="display:none;" /> <button onclick="document.getElementById('uploadImages').click()">选择图片</button> <div id="preview"></div> ``` #### jQuery脚本处理逻辑 利用`change`事件监听文件变化,并借助FormData对象封装待上传的数据包;同时设置好预览机制以便即时反馈给用户所挑选的照片列表: ```javascript $(function(){ $('#uploadImages').on('change', function(e){ var files = e.target.files; var formData = new FormData(); // 添加所有选定文件至formData for (var i = 0; i < files.length; ++i) { formData.append('files[]', files[i]); // 创建并显示图像预览 let reader = new FileReader(); reader.onloadend = function(event){ $("<img>").attr("src", event.target.result).css({ "width": "100px", "height": "auto" }).appendTo("#preview"); }; reader.readAsDataURL(files[i]); } // 发送POST请求完成实际上传操作 $.ajax({ url: '/your-upload-endpoint', data: formData, processData: false, contentType: false, method: 'POST', success:function(response){ console.log('Upload successful:', response); }, error:function(errorThrown){ console.error('Error during upload:', errorThrown); } }); }); }); ``` 此方法实现了无需刷新整个网页即可异步提交多个文件的目标,同时也提供了良好的视觉效果来增强用户的交互体验[^1]。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值