`
hegz
  • 浏览: 436061 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

IE下使用JavaScript的window.open函数在新窗口中导出EXCEL XML表格数据出错的处理

阅读更多

有时候根据客户需求,需要将数据导出到 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中测试通过。现在吃嘛嘛香,腰不疼,腿有力了,歌仔也可以唱了,春天里百花开,朗格朗格朗。。。。。。

 

 

  • 大小: 8.6 KB
  • 大小: 10.1 KB
3
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics