Win XP上的IE7不显示PDF文件的下载文件对话框

时间:2013-01-23 12:08:40

标签: javascript popup internet-explorer-7 windows-xp

我正在Umbraco网站上测试以下JavaScript:

<script type="text/javascript">
    function doSomething(id, name, userId, siteId, siteName, breadcrumb, documentUrl) {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "/myService.asmx/DoSomething",
            cache: false,
            dataType: 'json',
            data: "{ 'id' : '" + id
                + "', 'name' : '" + name
                + "', 'userId' : '" + userId
                + "', 'siteId' : '" + siteId
                + "', 'siteName' : '" + sitename
                + "', 'breadcrumb' : '" + breadcrumb + "'}",
            success: function () {
                window.open(documentUrl);
            }
        });
    }
</script>

我删除了一些东西以留下核心功能代码。对于我在下面讨论的两个场景,实际的Web服务调用都正常工作,它正在打开导致问题的documentUrl

现在,当我在运行WinXP和IE7的VM中测试网页时遇到问题。而不是脚本打开一个新窗口并向我显示PDF(或至少给我保存它的选项),我看到一个新的IE实例打开然后关闭的快速闪烁。

当我在IE9中测试同一页面时,在我的Win7笔记本电脑上,并通过Web开发工具栏进行更改以在IE7模式下渲染,我可以看到显示的PDF文件(因为我安装了福昕阅读器)。

我的问题是:为什么在WinXP中window.open()导致快速显示新的IE窗口然后关闭?

我在两个系统上都看着Fiddler,发现了一个不同之处。在VM下,当请求PDF时,HTTP状态是206,这是部分内容。在IE9下,请求是HTTP 200,而不是206。

有人可以解释一下这里可能会发生什么以及如何修复WinXP IE7实例吗?

我一直在关注WinXP / IE7中的弹出窗口阻止程序设置,并告诉它允许我正在使用的域的弹出窗口。我也禁用了拦截器,无论如何我仍然遇到同样的问题。

1 个答案:

答案 0 :(得分:0)

我没有在AJAX配置中包含async : false。在这之后,IE很高兴,现在显示下载文件对话框。