2011-09-21 89 views
0

我在制作一个网站。在一个地方有一个执行Ajax回调的按钮,然后尝试通过window.open()下载文件。预期的行为是让新窗口短暂闪烁,然后出现文件下载。这在IE9上运行正常,但IE8似乎有问题,即使弹出窗口阻止程序被禁用。Internet Explorer 8拒绝从弹出窗口下载文件

经过进一步的实验,我发现了另一个奇特的行为。如果我手动输入下载的URL到新打开的选项卡的地址栏中,我会收到一条错误消息。关于不能下载的通用东西。如果我现在尝试刷新页面(或者只是在地址栏中按Enter键,从而重复相同的请求),则下载过程会很好地进行。

我预料它可能与content-dispositioncache-control标题有关,但删除这些没有帮助。也没有将URL添加到“可信站点”区域。

因为我不喜欢弹出窗口(这不是我自己制作的),所以我会尝试用window.location重新制作它,但我对此行为感到困惑。是什么导致了它?

回答

0

我遇到过类似的问题。事实证明,当你使用AJAX来获取它们时,IE无法打开文件。我使用的解决方案是不使用ajax。相反,我用一个小jQuery和一个iframe

jquery - on click (dont need ajax/get) 

      var dynamicUrl = 'SomeFileService.aspx?someQueryParam=' + input; 
      $('#iframePopup').attr('src', dynamicUrl); 
      window.frames["#iframePopup"].location.reload(); 

HTML 

<iframe id="iframePopup" style="visibility:hidden;height:0px;width:0px;"></iframe> 
+0

我不完全确定我们在这里的同一页。你如何通过AJAX获取文件?我的意思是当AJAX请求完成时,我在其Success事件中打开一个弹出窗口。无论如何,需要AJAX请求来生成URL。 –

+0

@Vilx - 好吧,我明白了。 1.你为aspx设置了Response.Charset =“”;'如果没有.NET,'content-type:'的值是什么? 2.您是否通过简单显示“alert”来验证成功回调? 3.请尝试使用'Fiddler'或类似的东西来查看HTTP错误代码。另外,请告诉我们,如果这是使用NTLM身份验证。 –

相关问题