有时候根据客户需求,需要将数据导出到 EXCEL 的XML表格模板中。在进行此一操作时,为了不让导出窗口覆盖原先的用户界面,就需要打开新的浏览器目标窗口,在新窗口中进行操作,如下面代码所示:
var url = 'index.php?controller=Qtdsfk&action=Export&skrq=2010-06-09'; window.open(url, '_blank');
这时,杯具发生了,IE浏览器死活不按我们的要求正常导出数据,却弹出了错误提示窗口,如下图所示:

出错的原因是,在IE下window.open()里的第一个参数必须是一个干净的链接串,不能带多余的链接参数。换句话说,不能通过GET方式传递参数值。
但在FireFox下,下面语句:
window.open(url, '_blank');
却执行得很好。这时,我们就可以用到传说中的牛叉IE浏览器判断方法了。
将导出数据语句修改为:
var url = 'index.php?controller=Qtdsfk&action=Export&skrq=2010-06-09';
if (!-[1,]) {
document.location.href = url;
} else {
window.open(url, '_blank');
}
这样就可以保证IE和FF浏览器下都能够正常导出数据了。令人纠结的是,IE下在新目标窗口导出数据始终得不到解决。
由于客户端使用的浏览器还是IE为大部分,如果不解决这一问题,始终不是个事,心中始终有个解不开的结。因此,拿起《JavaScript权威指南》(第四版)死啃window.open()章节。最后看到讲解window.location.href的内容,心中豁然开朗,问题终于有解。
将导出语句修改为:
var w = window.open(); // 打开新窗口,返回窗口句柄 w.location.href = 'index.php?controller=Qtdsfk&action=Export&skrq=2010-06-09';
最后在IE、FF中测试通过。现在吃嘛嘛香,腰不疼,腿有力了,歌仔也可以唱了,春天里百花开,朗格朗格朗。。。。。。
解决IE浏览器导出数据问题
本文介绍了解决在IE浏览器中使用window.open()方法导出数据至Excel XML模板时出现的问题。通过调整JavaScript代码,确保了在IE及Firefox等浏览器上都能正确执行导出操作。
307

被折叠的 条评论
为什么被折叠?



