safari下无法模拟click()的解决方法 ------转载

个人体会:visibility:hidden 会占用物理空间,而display不会,所以可以再给<input type="file"/>添加cssStyle="visibility:hidden;position:absolute;left:10px;top:50px;"来控制它的绝对位置,可以放到页面角落空白处隐藏。

就不会影响美观了。

以下是网上搜到的解决办法:

之前在HTML5 File API — 打开本地图片并预览里提供一种模拟单击file控件的方法,后来发现这种方法在safari下无法使用。。。之前的旅行笔记和天地图版都是这样,导致safari下点击打开文件按钮不可用,也不提示错误,也不知道是不是这个原因比赛没有入围,唉。。。。

 

解决方法很简单,其实不是不能模拟safari,之前<input type="file"/>隐藏用的是display:none,之后改成visibility:hidden,就可以用了!!!我擦。

原因估计就是didplay没有占位了,safari找不到了。。。。

 

此外,safari下的file的accept属性不可用,所以在选择文件的时候需要判断,在file的change事件函数里判断一下:

    		$(‘#file‘).change(function(e) {
				var f = e.target.files[0];
				if(!f.type.match(‘image.*‘)) {
					alert(‘你选择的不是图片文件‘);
					return;
				}
				//_this.openFile(f);
			});

这里因为只选择一个文件,如果可选多个文件,就循环判断就行了。

 

safari下无法模拟click()的解决方法

标签:class   java   html   文件   使用   com   方法   log   http   

原文:http://www.cnblogs.com/zjzhome/p/3936877.html

posted @ 2017-11-16 15:55  那就墨丘利  阅读(426)  评论(0编辑  收藏  举报