html5uploader.js 兼容ie8方法如下:
拥有两个插件,一个是flash版本的uploadify,免费的。另一个是自己写的html5版本的,名叫html5uploader(好俗的名字。。),再加一个适配器uploadadapter,用来决定在什么时候调用哪个插件。页面中只调用uploadadapter。关键的难题就在于,页面中的代码是只写一次的,不管是flash的还是html5的都得能识别出页面上的参数,这也就是我的山寨版本的插件做的事情,原flash版本的配置参数通通得识别并有效。幸好,已经实现了。
上demo
很多东西,一上demo就都清楚了。。。
[html] view plain copy
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.uploadadapter.js"></script>
<script type="text/javascript" src="jquery.loadscript.js"></script>
<style type="text/css">
</style>
<script type="text/javascript">
$(function(){
$('#upload').uploadadapter({
fileTypeExts:'*.jpg*.png',
auto:false,
showUploaded:true,
baseurl:'.',//当前目录
multi:true,
removeTimeout:9999999,
uploadurl:'upload.php'
})
})
</script>
</head>
<body>
<input type="file" name="file" id="upload" />
</body>
</html>
ie8下调用flash
firefox、chrome下调用html5
略有差异,ie8下圆角没了。。。如果不喜欢这个样式呢,就请打开css文件自己修改吧。
很简单的调用,可以看到在页面中使用的是uploadadapter,由它来决定调用哪个插件。俩个插件所需要的js文件和css文件都是异步引入的,此处用到一个小插件loadScript。参数没有写全,可以自己看源代码的注释~
uploadadapter中的调用情况是我需要的配置,你也可以随意修改。
四、相关文件注释
在此把文件夹中的文件做一个简要介绍:
/html5uploader html5上传插件,你也可以拿来单独使用
/uploadify3.2 flash上传插件,也可以拿来单独使用
/uploads 存放上传的文件
/jquery.loadScript.js 用于异步引入脚本的小插件
/jquery.uploadadapter.js 适配器,用来判断客户端类型,动态调用上传插件
/upload.php 后台处理程序,最基本的
五、上源码,注释很全哦
http://download.csdn.net/detail/never_say_goodbye/5090639六、一个bug!!
很重的哦,我之前给疏漏了,在这里说一下,文件就不重新上传了
在jquery.html5uploader.js的158和164行,将$('.uploadify-progress')改为$('#'+file.index).fnd('.uploadify-progress'),否则上传多个文件会混淆。
先需要确保你的HTML页面开始部分要有DOCTYPE声明。DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档,具体会影响:对标记attributes 、properties的约束规则
对浏览器的渲染模式产生影响,不同的渲染模式会影响到浏览器对于CSS代码甚至JavaScript脚本的解析
DOCTYPE是非常关键的,目前的最佳实践就是在HTML文档的首行键入:
<!DOCTYPE html>
Bootstrap3 是移动设备优先的原则开发的,所以原因可能如下:
1.没有正确调用远程地址
即只要是IE9以下,就调用两个专门的js
1 <!--[if lt IE 9]>
2 <script src=""></script>
3 <script src=""></script>
4 <![endif]-->
但是我测试发现仅仅使用以上js文件不可行
2.调用方法不正确
不要用file://或@import形式引用respond.min.js或respond.js或css文件
3.针对浏览器的内容做标识(使用meta标签调节浏览器的渲染方式)
bootstrap不支持IE兼容模式,为了让IE浏览器运行最新的渲染模式,将添加以下标签在页面中
<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />
IE=edge表示强制使用IE最新内核,chrome=1表示如果安装了针对IE6/7/8等版本的浏览器插件Google Chrome Frame(可以让用户的浏览器外观依然是IE的菜单和界面,但用户在浏览网页时,实际上使用的是Chrome浏览器内核),那么就用Chrome内核来渲染。
内核控制Meta标签,因为目前国内的主流浏览器都是双内核,故而添加meta标签来告诉浏览器使用什么内核来渲染页面
4.IE8不支持container的几个属性
IE8不完全支持box-sizing:border-box与min-width, max-width, min-height或max-height的一起使用.所以,v3.0.1的bootstrap中对container的类,已经不再使用max-width了。
5.JS与CSS的引入顺序导致的问题
必须先引用css在引用js
<link rel="stylesheet" type="text/css" href="bootstrap.min.css" media="screen"/>
<script type="text/javascript" src="js/respond.min.js"></script>
6.DOCTYPE前后有空行
<!DOCTYPE html>
这里有空格也不行,要去掉空格
<html>
7.placeholder不被支持
下面是解决IE支持placeholder的方法
本文引用的jquery是1.11.1测试通过,先引用jquery
<script type="text/javascript" src=""></script>
也可以用其他的jquery版本
再引入<script type="text/javascript" src="js/jquery.placeholder.js"></script>
然后再文件中加入一下代码
1 <script type="text/javascript">
2 $(function () {
3 // Invoke the plugin
4 $('input, textarea').placeholder()
5 })
6 </script>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)