打开新页面下载文件后新页面不能关闭的问题

时间:2022-07-04 17:08:59
操作流程:
1.点击列表页面的下载按钮,弹出新页面进行下载。
打开新页面下载文件后新页面不能关闭的问题
2.下载页面选择路径并确定下载后开始下载文件。
打开新页面下载文件后新页面不能关闭的问题
问题:
chrome打开新页面下载,下载完成后关闭下载页面。(这是我期望的结果)
ie打开新页面下载,下载完成后不能关闭下载页面。(这是问题)
主要实现代码:
下载页面主要代码:
	response.reset();//可以加也可以不加
response.setContentType("application/x-download");
response.addHeader("Content-Disposition","attachment;filename=slservSearchManage.xls");
SlServSearchManageClient Client = new SlServSearchManageClient();
if(operType.equals("export")){//测试日志导出
Client.exportExcelForTestLog(request,response);
}
%>
<script>
window.close();
self.close();//关闭子页面  
</script>

在exportExcelForTestLog方法中获取response.getOutputStream();然后利用这个输出流生成文件。

6 个解决方案

#1


f12 debug  看看是否报错,self是什么,关闭哪个页面??

#2


试试
response.setContentType("application/vnd.ms-excel;charset=UTF-8");

#3


用iframe
<a target="if" href="http://dlsw.baidu.com/sw-search-sp/soft/3a/12350/QQ6.9.13786.0.1422410355.exe">下载</a>
<iframe name="if" style="display:none;"></iframe>

#4


引用 1 楼 xmt1139057136 的回复:
f12 debug  看看是否报错,self是什么,关闭哪个页面??

没有报错,ie10下载页面能下载后自动关闭,chrome也能,360浏览器的ie模式打开下载页面后不能自动关闭下载页面。

#5


引用 3 楼 slwsss 的回复:
用iframe
<a target="if" href="http://dlsw.baidu.com/sw-search-sp/soft/3a/12350/QQ6.9.13786.0.1422410355.exe">下载</a>
<iframe name="if" style="display:none;"></iframe>

这个下载也可以,但是有一个问题,数据多的时候文件生成比较耗时,所以在下载之前js弹出一个loading的等待条,在下载页面的js根本就不执行了,所以这个loading不能关闭。
如上面的下载页面主要代码中的js:alert('close download window');根本就没有执行。

   if(operType.equals("export")){//测试日志导出
        Client.exportExcelForTestLog(request,response);
    }
%>
<script>
alert('close download window');
window.close();
self.close();//关闭子页面  
</script>

因此我才改成新页面下载的,弹出新页面用户知道已经开始下载了,就不能弹出loading图标了。

#6


引用 2 楼 u011514731 的回复:
试试
response.setContentType("application/vnd.ms-excel;charset=UTF-8");

不是这个原因导致的

#1


f12 debug  看看是否报错,self是什么,关闭哪个页面??

#2


试试
response.setContentType("application/vnd.ms-excel;charset=UTF-8");

#3


用iframe
<a target="if" href="http://dlsw.baidu.com/sw-search-sp/soft/3a/12350/QQ6.9.13786.0.1422410355.exe">下载</a>
<iframe name="if" style="display:none;"></iframe>

#4


引用 1 楼 xmt1139057136 的回复:
f12 debug  看看是否报错,self是什么,关闭哪个页面??

没有报错,ie10下载页面能下载后自动关闭,chrome也能,360浏览器的ie模式打开下载页面后不能自动关闭下载页面。

#5


引用 3 楼 slwsss 的回复:
用iframe
<a target="if" href="http://dlsw.baidu.com/sw-search-sp/soft/3a/12350/QQ6.9.13786.0.1422410355.exe">下载</a>
<iframe name="if" style="display:none;"></iframe>

这个下载也可以,但是有一个问题,数据多的时候文件生成比较耗时,所以在下载之前js弹出一个loading的等待条,在下载页面的js根本就不执行了,所以这个loading不能关闭。
如上面的下载页面主要代码中的js:alert('close download window');根本就没有执行。

   if(operType.equals("export")){//测试日志导出
        Client.exportExcelForTestLog(request,response);
    }
%>
<script>
alert('close download window');
window.close();
self.close();//关闭子页面  
</script>

因此我才改成新页面下载的,弹出新页面用户知道已经开始下载了,就不能弹出loading图标了。

#6


引用 2 楼 u011514731 的回复:
试试
response.setContentType("application/vnd.ms-excel;charset=UTF-8");

不是这个原因导致的