`
TimerBin
  • 浏览: 361249 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js文件上传ie报错(jquery+Iframe)

    博客分类:
  • JAVA
阅读更多

在最近工作中需要图片上传功能,前提条件:

1、上传过程中页面不刷新。

2、上传页面中不使用file按钮(隐藏file按钮),用a标签来隐式调用file按钮。

 

于是想到基于Iframe做了一个图片上传,在JS中调用$("#uploadFile").submit()时出无法在IE浏览器下兼容容,无法正常上传提示"拒绝访问"脚本错误(在Chrome、FireFox下正常)。

详情可参阅:http://blog.csdn.net/jetxt/article/details/12953397

 

以下为两种解决方案说明:

 

第一种:

在父级页面中定义Iframe标签src指定到子上传页面或服务端方法。

 

<iframe id="uploadIframe" frameborder="no"  src="..../uploadSum.html" ></iframe>

 其中uploadSum.html如下所示:

 

 

<style>
	.fileClass{
	   padding: 0 20px;
	   height: 30px;
	   margin-left:-93px;
	   line-height: 30px;
	   filter:alpha(opacity:0); 
	   z-index:999;
	   width:48px;
	   cursor:pointer;
	   opacity:0;
	 }
</style>
 <form id="uploadFile" method="post"   enctype="multipart/form-data">
<a href="javascript:void(0);" id="upload" >上传图片</a>
<input id="picimg" name="picimg" onchange="uploadPicimg()" class="fileClass" type="file" />
<script type="text/javascript">
function uploadPicimg(){
	$("#uploadFile").attr("action","...");
	$("#uploadFile").submit();
}
</script>
</form>

 

在以上代码中是设置了picimg样式,让其覆盖到id=upload的a标签上,当用户点击a标签时,实际隐式的点击了隐藏的file按钮。

说到这里有人就会问了为什么不直接为a标签绑定onclick事件,让其onclick事件直接调用$("#picimg").click(),因为一旦为a标签绑定onclick事件就会出现以上所说的IE不兼容无法上传问题。

 

这种方式在应用中比较简单常见,这里不多做解释,望谅解!

 

第二种:

将上传图片a标签与iframe一同定义在父级页面中,移出Iframe不再放在iframe包含的子页面中。其中Iframe标签src指定到子上传页面或服务端方法。

 

<script type="text/javascript">
//触发Iframe中的file按钮click事件
function doUploadPicImg() {
	$("#picimg", $("#uploadIframe")[0].contentWindow.document).click();
}
</script>
<a href="javascript:void(0);" id="upload" onClick="doUploadPicImg()" >上传图片</a>
<iframe id="uploadIframe" frameborder="no"    src="..../uploadSum.html" ></iframe>

 其中uploadSum.html如下所示:

 

 

<form id="uploadFile" method="post"   enctype="multipart/form-data">
<input id="picimg" name="picimg" onchange="uploadPicimg()" style="opacity:0;filter:alpha(opacity:0); " type="file" />
<script type="text/javascript">
function uploadPicimg(){
	$("#uploadFile").attr("action","...");
	$("#uploadFile").submit();
}
</script>
</form>

将a标签移出Iframe后再调用 onClick进行触发file按钮的click事件,可以兼容IE浏览器,不再提示“拒绝访问”错误脚本提示。

第二种方法具体什么原因解决了IE浏览器兼容问题,一直没有想明白,还望知情人士能分享下原理,不胜感激!

 

 

分享到:
评论

相关推荐

    PHP多文件上传插件,PHP+jQuery+Ajax多图片上传

    2. **jQuery插件**:例如`jQuery.form.js`或`jQuery.fileupload.js`,它们提供了方便的API来处理多文件上传。这些插件可以监听文件选择事件,创建FormData对象,将文件数据附加到对象中,并通过Ajax发送到服务器。 ...

    HTML+CSS+JavaScript+jQuery+Bootstrap等前端框架实现的前端案例.zip

    在webdemo-master中,JavaScript文件可能包含了对DOM(Document Object Model)的操作,以及各种交互逻辑。 jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理和动画制作。它提供了简便的API,如`$...

    ajax+jquery+ashx实现上传文件

    在Web开发中,异步传输(Ajax)技术允许我们...通过这种组合使用Ajax、jQuery和ASHX的方式,我们可以创建一个高效且用户体验良好的文件上传系统,无需离开当前页面即可完成文件上传,从而提高了Web应用的交互性和效率。

    JQuery+ajax+mock.js模拟注册

    实现JQuery+ajax+mock.js模拟注册,判断输入框是否输入正确

    基于HTML+CSS+JS+JQuery+BootStrap仿天猫官网预览地址:.zip

    基于HTML+CSS+JS+JQuery+BootStrap仿天猫官网预览地址:.zip基于HTML+CSS+JS+JQuery+BootStrap仿天猫官网预览地址:.zip基于HTML+CSS+JS+JQuery+BootStrap仿天猫官网预览地址:.zip基于HTML+CSS+JS+JQuery+BootStrap...

    简单js+jquery+iframe富文本编辑器

    手撸简单版前端富文本编辑器。基本原理:由于富文本内容不想收到所在页面或者前端框架的影响,或者说写一个完全单独的纯编辑器,采用原生iframe+js+jquery实现。

    餐饮业点餐系统+开题报告,框架:html + css +js +jquery +jsp + servlet

    框架:html + css + javascript(js) +jquery +jsp + serlvet + java + ssm + mysql 前端:html + css + javascript(js) +jquery +jsp 后端:serlvet + java + ssm + mysql 开发工具:ideaIC-2022.3.2.exe + jdk1.8 +...

    struts+jQuery+ajax文件上传带进度条

    在这个"struts+jQuery+ajax文件上传带进度条"的项目中,我们主要关注的是如何利用这些技术实现在后台处理文件上传时,前端能够显示实时的进度条效果,提升用户体验。 首先,Struts是一个基于MVC(Model-View-...

    java web餐饮业点餐系统框架:html + css + js +jquery +jsp + servlet ssm

    框架:html + css + javascript(js) +jquery +jsp + serlvet + java + ssm + mysql 前端:html + css + javascript(js) +jquery +jsp 后端:serlvet + java + ssm + mysql 开发工具:ideaIC-2022.3.2.exe + jdk1.8 +...

    asp.net Uploadify 多文件上传 Jquery 多文件上传 Jquery+flash 多文件上传

    Jquery 多文件上传,jquery+flash 多文件上传,界面美观, 很炫的上传组件,支持中文! 本实例经过严格测试,保证能正常使用!网上其他好多实例都不能正常运行。 uploadify是一款容量小、功能强的Js批量上传工具,...

    jquery+SWFUpload+COS上传组件的使用

    jquery+SWFUpload+COS上传组件的使用 jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件...

    定点定时长音乐播放系统,带进度条的文件批量上传(jquery+plupload+jsp+servlet)

    定点定时长音乐播放系统,带进度条的文件批量上传(jquery+plupload+jsp+servlet),该系统没有使用数据库,不需要过多的配置就可以使用,在项目中有一个文档,说明该系统的使用方法与注意事项。

    wijmo+jquery+jqueryui+jqgrid 最新开发包以及demo

    jQuery-1.7.2.js是这个版本的库文件,提供了许多功能,如选择器(用于查找DOM元素)、DOM操作(添加、删除或修改元素)以及特效(滑动、淡入淡出等)。jQuery的API设计使得开发者能够快速上手,提高开发效率。 2. *...

    HTML5+CSS3+JQuery+Javascript

    HTML5+CSS3+JQuery+Javascript 中文手册文档

    jQuery+d3横向树型股份结构图特效

    2. `js`目录:存放JavaScript代码,其中应该包括jQuery库和自定义的JavaScript代码,用于处理数据和实现特效。 3. `css`目录:存放样式表,用于设置元素的外观和布局。 在`index.html`中,我们通常会引入jQuery库和...

    js+jquery+CSS教学演示视频

    js+jquery+CSS教学演示视频 js+jquery+CSS教学演示视频 js+jquery+CSS教学演示视频 js+jquery+CSS教学演示视频 js+jquery+CSS教学演示视频

    jQuery+ajaxupload+imgareaselect+asp.net上传预览截取图像

    在IT行业中,前端开发经常需要处理用户上传图片的需求,而"jQuery+ajaxupload+imgareaselect+asp.net上传预览截取图像"这个主题,就是一种高效且用户体验优秀的解决方案。接下来,我们将深入探讨这些技术及其整合...

    PHP+jQuery+Ajax多图片上传

    3. **AJAX请求**:当用户点击上传按钮,jQuery使用Ajax创建一个POST请求,将图片文件数据作为FormData对象发送到服务器。 4. **PHP处理**:服务器端的PHP脚本接收到数据后,检查图片的合法性(例如,大小、类型),...

    nodejs+express+mongodb+bootstrap+jquery+ejs写的电影demo

    包括服务器端的Node.js文件(可能有app.js或server.js)、Express配置、数据库模型(mongoose schema)、EJS视图文件、静态资源(如Bootstrap的CSS和JavaScript文件)、可能还包含一个启动或部署脚本等。 通过这个...

    jQuery+php实现ajax文件即时上传

    5. **jquery.form.js**:这是一个jQuery插件,扩展了jQuery的功能,使其可以方便地处理表单的Ajax提交,包括文件上传。它支持多文件上传、进度条显示等功能,使得文件上传更加便捷。 6. **action.php**:这是PHP...

Global site tag (gtag.js) - Google Analytics