`
会飞的狗
  • 浏览: 16688 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

让人郁闷的window.open[已解决]

阅读更多

toolbar

 

在使用Ext.grid.GridPanel时,为了方便导出表格中数据。使用了window.open在新窗口中打开PDF,XLS格式的结果,在firefox2.0.15,3.0.1下正常,在IE6,IE7下返回一个空白页面,从服务器控制台可以看到服务器端是执行了报表导出动作,换成链接方式<a href="export.action?xxx=xxx"> 则可以正确显示结果。

window.open(url) 与 <a href="url" >有这么大区别?export.action是将grid中数据已报表形式显示出来,并可选择导出文件类型。

 

代码如下

 

      var grid = new Ext.grid.GridPanel({
          border:false,
          viewConfig: {
            forceFit:true
          },
          store: store,
          cm: cm,
          sm:gridsm,
          loadMask: true,
          bbar: new Ext.PagingToolbar({
              pageSize: 20,
              store: store,
              displayInfo: true,
              items:['-',{
                  text:'查询范围',
                  menu:contactGridFilterMenu
                },
                filterField,
                filterButton,
                clearButton,
                '-',
                {
                  iconCls:'icon-pdf',
                  tooltip:'将表格导出为PDF文件',
                  handler:function(){
                    var s='';
                    if(store.lastOptions){
                      s+=Ext.urlEncode(store.lastOptions);
                    }
                    if(store.baseParams){
                      if(s===''){
                        s+=Ext.urlEncode(store.baseParams);
                      }else{
                        s+='&';
                        s+=Ext.urlEncode(store.baseParams);
                      }
                    }
                    if(''!==s){
                      s = '?'+s;
                    }
                    window.open("export.action"+s,"_blank");
                  }
                },{
                  iconCls:'icon-xls',
                  tooltip:'将表格导出为XLS文件',
                  handler:function(){
                    var s='';
                    if(store.lastOptions){
                      s+=Ext.urlEncode(store.lastOptions);
                    }
                    if(store.baseParams){
                      if(s===''){
                        s+=Ext.urlEncode(store.baseParams);
                      }else{
                        s+='&';
                        s+=Ext.urlEncode(store.baseParams);
                      }
                    }
                    if(''===s){
                      s = '?type=xls';
                    }else{
                      s = '?' + s +'&type=xls';
                    }
                    window.open("export.action"+s);
                  }
                }
              ]
          })
      });

 

 

 

 

 

分享到:
评论
4 楼 会飞的狗 2008-09-25  
kimmking 写道
我的项目直接在window中嵌入excel了。
pdf还没办法。

--------

1.兼容firefox?
2.能直接保存在服务器上?
3 楼 kimmking 2008-09-23  
我的项目直接在window中嵌入excel了。
pdf还没办法。

--------
2 楼 会飞的狗 2008-09-23  
response.setHeader("Content-Disposition", "attachment;filename=\"" + getFileName() + "\"");  
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");  
response.setHeader("Pragma", "public");
response.setDateHeader("Expires", (System.currentTimeMillis() + 1000));
添加了文件头,本来只有第一行,加了后面的就可以了。具体还不是很明白。
感谢fins。从他的一篇回复中找到的
1 楼 chief007 2008-09-22  
咋解决的呀?

相关推荐

    Javascript中封装window.open解决不兼容问题

    对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 var openWindow = function(url, options) { var str = ""; ...

    window.open父子窗口传值问题

    首先,让我们了解一下`window.open`的基本语法: ```javascript var newWindow = window.open(url, name, features); ``` - `url`: 子窗口要加载的URL。 - `name`: 窗口的名字,可以用于后续引用。 - `features`: ...

    greybox封装为一个控件

    于项目要用到弹出窗口,或者叫做模拟窗口,这段时间就研究了下,解决方案很多,比如,window.open();window.showDialog();用层模拟,框架+DIV+Javascript.... 用window.open();这种方法的缺点是,会被浏览器或者...

    迄今为止我用过最经典的javascript课件;有需要的同道人可以尝试

    1. 打开窗口:`window.open()`方法用于打开新的浏览器窗口或者在已存在的窗口中加载新的URL。这个方法接受四个参数:URL(要加载的页面地址)、name(窗口的名称,可以用于引用窗口)、features(定义窗口的特性,如...

    南京烽火面试题.docx

    1. 类似于抢票,有 50 张票,后台如何保证每个人都可以抢到:解决这个问题的方法有多种,如使用 _线程池_、_队列_ 等。这些方法都可以帮助实现抢票的功能。 2. 派生类的理解、精髓:派生类是面向对象编程中的一个...

    信息安全_对方不想说话并扔了个message.pptx

    1. 窗口间通信,如`Window.open`返回的窗口,`Window.opener`,`form post`的目标窗口,`iframe`的`contentWindow`,以及`Window.frames`。 2. 与`Window.parent`或`Window.frames[0]`进行父子窗口之间的通信。 3. ...

    LXDE.rar_lxde_xwindow_xwindow开发

    **LXDE(Lightweight X11 Desktop Environment)是一个轻量级的X Window桌面环境,专为资源有限的计算机和嵌入式设备设计。它的设计理念是高效、快速且占用资源少,提供了一个用户友好的图形界面,使得在低端硬件上...

    弹出窗体被拦截解决方案

    1. 使用`window.open()`函数:这种方法通常在需要新开窗口时使用,但当尝试通过POST方法传递数据或遇到跨域问题时,浏览器会拦截弹出窗口。此外,大多数浏览器都会对这种行为进行限制。 2. 表单提交结合`_blank`...

    java代码在window获取linux文件

    `JSch`库提供了一个这样的解决方案,它是一个纯Java实现的SSH2库,允许开发者连接到远程计算机并执行命令,传输文件等。本篇将详细介绍如何使用Java和JSch在Windows上实现对Linux服务器的文件获取。 首先,我们需要...

    PostMessage系统漏洞及应对方案.pptx

    - **窗口间通信**:如`Window.open`返回的窗口对象,`Window.opener`,`a`标签打开的窗口,`form`提交的目标窗口。 - **iframe通信**:同页面内或跨页面的`iframe`间的`contentWindow`和`Window.frames`。 - **...

    开窗游戏代码 java版

    开窗游戏是一款经典的编程练习,通常用于教学或面试中,以测试候选人的逻辑思维和问题解决能力。在Java版本的开窗游戏中,我们通常会遇到一个数组或列表,表示一排窗户的状态,然后通过一系列规则来改变这些窗户的开...

    Ajax相关学习内容整理.pdf

    在IE5和IE6中,使用`ActiveXObject`来创建这个对象,而在其他现代浏览器中,则通过`window.XMLHttpRequest`来创建。使用此对象,可以实现浏览器与服务器间的异步通信。 ```javascript var xmlhttp; if(window....

    用javascript实现始终保持打开同一个子窗口以及关闭父窗口同时自动关闭所有子窗口

    今天在网上看到这篇文章,感觉很少会用到,但毕竟还是有些人需要这样的功能的,否则就不会有这篇文章,这篇文章主要是解决以下问题: 代码如下:1.点击一个可以打开新窗体的链接,如何实现如果窗体已打开,则将焦点转...

    JS实现关闭当前页而不弹出提示框的方法

    通过`window.open`方法打开新页面,并同时设置`window.opener`为`null`,这样可以避免在关闭当前页面时弹出提示框。以下是实现这一功能的JavaScript代码: ```javascript function closeWinAndOpen(url){ var ...

    ie与session丢失(新窗口cookie丢失)实测及解决方案

    今天在一个群中有人问到ie6中使用js的open,发现新窗口中并获取不到session, 经过使用下面的测试代码测试发现,是因为phpsessionid储存是进程级的有效期,只有同一进程才能获取得到,很多人说,open后或是target=”_blank...

    解决myeclipse .class文件源码问题

    在IT行业中,开发人员经常会遇到需要查看或理解已编译的`.class`文件的源代码问题,这在没有原始源代码的情况下尤其重要。本文将详细探讨如何在MyEclipse环境中解决这种问题,主要关注如何使用反编译插件来查看`....

    织梦5.7QQ登录插件

    注:论坛中还有人说删除本插件,模块管理成为空白,解决办法: 下载个和你网站相同版本的DEDE程序,然后找到include/dedemodule.class.php,把这个文件上传到你的网站目录下,一切OK。模块管理再也不是空白了。

    Chapterdetectivesandcrimes初中英语九年级英语PPT教学课件.pptx

    例如,“John admitted breaking the window.”(约翰承认打破了窗户。) 2. **Suspect (嫌疑犯)**:指被怀疑犯罪的人,常用于警方调查。例如,“The police are holding a suspect for questioning.”(警方拘留了...

    phonegap 中如何直接使用json格式数据

    var inAppBrowserRef = window.open(url, '_blank', 'location=yes'); inAppBrowserRef.addEventListener('loadstop', function(event) { inAppBrowserRef.executeScript({ code: 'window.myData' }, function...

    解决layer.msg 不居中 ifram中的问题

    而在iframe页面中,使用layer.msg弹出消息时,如果要让消息框在父页面居中显示,需要将消息框的父层设置到最外层的window对象,而不是iframe的window对象。这里使用了parent.parent来访问上层的parent页面的window...

Global site tag (gtag.js) - Google Analytics