我想要在报表下载时打开一个遮罩,下载响应给客户端的时候关闭遮罩。这个看似简单的简单的功能需求,在google浏览器测试时遇到了阻碍。
我预想的代码大致是这样的:
var export=
document.getElementById("export");
export.width = 0;
export.height = 0;
export.innerHTML
= ‘<iframe id="frameId" src ="‘+url+‘" width="0" height="0"
></iframe>‘;
loadMarsk.show();
这段代码通过了IE、FireFox的测试。在google浏览器中却不能触发iframe
的onload事件,导致遮罩一直不能消失。
经过尝试我确信并不是google不支持onload事件,只是这种iframe加载的方式没有得到很好的支持。
google
baidu搜索没有得到解决方案,无奈下采用了稍显复杂的办法。
最终代码大致如下:
var export=
document.getElementById("export");
export.width = 0;
export.height =
0;
loadMarsk.show();
if(!Ext.isIE){
var
requestUrl = url.replaceAll("&&","md5");
var
page=baseUrl+"pages/googleDown.jsp?bk="+requestUrl;
export.innerHTML = ‘<iframe style="display: none" src
="‘+page+‘" width="0" height="0" ></iframe>‘;
}else{
export.innerHTML = ‘<iframe
id="frameId" src ="‘+url+‘"
width="0" height="0"
></iframe>‘;
}
然后在googleDown.jsp页面
<script
type="text/javascript">
window.onload=function(){
parent.loadMarsk.hide();
};
</script>
</head>
<body>
<iframe src
="<%=request.getParameter("bk").replaceAll("md5", "&&") %>"
width="0" height="0"></iframe>
</body>