解决input[type=file]打开时慢、卡顿问题
经过测试发现,在mac里面safari、Firefox、Chrome(opera不知道为啥老闪退)都没有卡顿问题
在windows里面,Firefox不卡顿,只有Chrome卡顿。
然而,这个插件是从另一个项目里面借用过来,再加上了限定图片类型的功能而已。
原组件并没有这个卡顿问题,那么问题只可能是在限定图片类型这点上了。
先贴上我的代码
<input
accpet="image/*"
style={inputStyle}
ref={c=> this._imgFile = c}
onChange={this.handleChange.bind(this)}
type="file" name="image" disabled={disabled}
/>
于是我决定先去掉accpet试试……
果然就没有了卡顿的问题。
那么本包在试试accpet=”image/jpg”果然也不卡卡的了!!
看来问题的所在就是”image/*”
但是写accpet的原意是要想要筛选出所有图片_(:з」∠)_
那么为了实现这个需求,同时提高用户体验,只能采取枚举了
修改后的代码
<input
style={inputStyle}
ref={c=> this._imgFile = c}
onChange={this.handleChange.bind(this)}
type="file" name="image" disabled={disabled}
accpet="image/gif,image/png,image/jpeg,image/jpg,image/bmp"
/>
再试试,果然妥妥的了!
但是到底是为什么会这么卡呢??我查了查万能的Stack Overflow→_→
原来是因为Chrome的SafeBrowsing功能会在上传或保存时检查文件,
如果网络连接到google的速度比较快呢,就没有什么问题。
但是如果连接比较慢,或者干脆跪掉了,那SafeBrowsing就会让Chrome挂起一段时间,直到文件检查结束或者超时
使用 accept="image/png, image/jpeg, image/gif" 就可以解决这个问题,因为这些MIME类型在SafeBrowsing的白名单里面,不需要检查。
但是如果用像是 accept="image/*" 这样的呢,就不行了,就有可能变得卡卡的。
解决input[type=file]打开时慢、卡顿问题的更多相关文章
- <input type="file" />浏览时只显示指定文件类型
<input type="file" />浏览时只显示指定文件类型 <input type="file" accept="appli ...
- html中,文件上传时使用的<input type="file">的样式自定义
Web页面中,在需要上传文件时基本都会用到<input type="file">元素,它的默认样式: chrome下: IE下: 不管是上面哪种,样式都比较简单,和很多 ...
- Android WebView 不支持 H5 input type="file" 解决方法
最近因为赶项目进度,因此将本来要用原生控件实现的界面,自己做了H5并嵌入webview中.发现点击H5中 标签 不能打开android资源管理器. 通过网络搜索发现是因为 android webvie ...
- 谷歌游览器对<input type='file'> change只能响应1次解决和样式的改变
在项目过程中遇到的需要上传本地文件,file的原始控件不太美观,但是这个控件和button有点不太一样, 改变这个样式的思路就是在控件外面套一层链接,然后把file控件的透明度设置为0(透明).样式只 ...
- 隐藏<input type="file"> 实现点击div或图片打开文件选择路径
HTML: <input type="file" style="display:none" id="addfile-btn"> ...
- python+selenium:解决上传文件<input type='file'>标签属性被css的visibility隐藏导致无法定位元素的问题
要想上传文件,需要找到在HTML中<input type="file" />这个标签,有它就可以利用send_keys上传文件,不过这里的<input>元素 ...
- 文件上传按钮input[type="file"]按钮美化时在IE8中的bug【兼容至IE8】
首先看一下完成后的效果,鼠标移入可改变为手指的效果. 在此就不加图标了 <label class="file-upload"> <span>上传附件< ...
- Android:让WebView支持<input type=”file”…>元素
最近在做一个活动页面:用户上传一张图片进行缩放.旋转后点击下一步填写内容后生成图片! 做好后经过各种测试是没有问题的,基本没有什么明显BUG,流程都能走通,但是嵌入到APP后,问题就来了! 在IOS上 ...
- INPUT[type=file]的change事件不触发问题
在网页上要操作文件通常会使用INPUT[type=file]控件,但这个控件的设计很蛋疼.它不像其它编程语言中文件选择后会触发一个事件,只是让上面的文字改变,而这个改变可能会触发change事件而已. ...
随机推荐
- Java虚拟机14:Java对象大小、对象内存布局及锁状态变化
一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个 ...
- influxdb + Grafana可视化监控平台
在centos6.5上influxdb + Grafana监控平台配置: 1.RedHat and CentOS users can install the latest stable version ...
- javascript学习笔记(一):词法结构
一:字符集 javascript程序是用Unicode字符集编写的. 二:区分大小写 javascript是区分大小写的语言,但需注意的是HTML不区分大小写 三:空格.换行符和格式控制符 javas ...
- windows环境下使用virtualenv对python进行多版本隔离
最近在用python做一个文本的情感分析的项目,用到tensorflow,需要用python3的版本,之前因为<机器学习实战>那本书的缘故,用的是python2.7.所以目前的情况是要两个 ...
- 配置IIS让网站可以播放mp4文件
最近遇到这么一个问题,网站当中的mp4不能播放了--每次点击播放的时候都会产生404的错误(如下图).这个问题来得有些蹊跷,因为在这台服务器上其他的文件都能正常执行,比如xml.jpg.aspx等文件 ...
- R 包 安装 卸载 查看版本
R 查看包的版本 version> packageVersion("snow") 卸载包remove.packages 从源码安装包install.packages(path ...
- 深入浅出HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...
- Loadrunner12解决无法录制chrome及脚本为空问题
首先,得安装LR12,一般用LR12录制,由于未破解,用LR11跑并发. LR12官方文档说明里是支持chrome及火狐的,但是实际录制起来,还是有一定的问题,目前发现的问题主要有两个: (1)LR录 ...
- AI相关 TensorFlow -卷积神经网络 踩坑日记之一
上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...
- Android 4.0以后正确的获取外部sd卡存储目录
刚解决这个棘手的问题 找了很久,随笔记下. 网上搜索 android 获取外部sd卡存储目录 普遍都是: 1) Environment.getExternalStorageDirectory() 这个 ...