IE8中关于使用iframe进行动态文件下载的问题

         我们知道只要在页面中创建个iframe元素,把src的值设置为网络文件如zip,js,rar等地址,就可以实现动态文件的下载功能。如果是普通的静态文件,则可以直接使用a元素链接即可,把a元素的src指向网络地址文件,点击后便会立刻下载(这相当于直接在浏览器中键入网络文件地址)。
         而动态文件下载,IE浏览器会做出一些友好的提示(当访问地址有文件下载时便会在网页的最上方提示:"为帮助保护您的安全,Internet Explorer已经阻止从此站点下载文件到您的计算机。单击此处查看选项...",这是ie的保护程序,防止下载有害文件,用户也可以自己对浏览器设置成不提示或者下载时按住ctrl键)。当我们允许下载时,浏览器会重新刷新当前页面,需要我们再点击下载一次才会弹出保存文件的对话框。所以这个相对于a元素来说多了一个刷新页面的过程,但下载的内容可以是后台动态生成的。

 前面讲了那么多,还是没有说到我所遇到的问题,真是悲催。我遇到的问题是(以下问题均在IE8 8.0.6001.18702版本出现,在ie6版本中没有这个问题):
   1.我在页面中创建一个iframe
   2.然后也设置了src为网络文件地址
   3.ie提示下载,我选择允许
   4.页面刷新,我重新点击进行下载
   5.ie提示下载,我选择允许
   6.页面刷新,我重新点击进行下载
   7.ie提示下载,我选择允许
   ....(没完没了)
 就这样,如果不进行浏览器设置或者不按住ctrl永远也下载不了文件。在ie6下只需要进行两次过程即可下载文件。

 经过分析和测试得到下面这个结果,不知道对不对,但都是在实践基础之上总结的:
   1.创建的iframe的页面在浏览器刷新后还必须存在(我的问题就是,我在一个动态创建的内嵌页面中创建这个下载文件的iframe的,当页面刷新后,内嵌页面已经消失)
   2.刷新后的页面中不能有404的内嵌页面,当我刷新的页面中有一个404页面时,问题还是重现

 下面是自己的解决方案:
   把iframe创建的top页面中,这样浏览器刷新后,top页面总是存在,并且解决页面中存在的404问题。这样就不会出现一直在弹出下载提示的问题了。
   唉,可怜了web开发人员, IE6,IE7,IE8,IE小叔、小姑妈、大舅子、大姨妈我...... (~o~)

posted @ 2011-03-15 18:19  恋之物语  阅读(2200)  评论(0编辑  收藏  举报