0

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 で Web ページをテストすると、問題が発生します。スクリプトが新しいウィンドウを開いて PDF を表示する (または少なくとも保存するオプションを提供する) 代わりに、新しい IE インスタンスが開いてから閉じるというクイックフラッシュが表示されます。

Win7 ラップトップの IE9 で同じページをテストし、Web Dev Toolbar を使用して IE7 モードでレンダリングするように変更すると、PDF ファイルが表示されます (Foxit Reader がインストールされているため)。

私の質問は次のとおりです。なぜ WinXPwindow.open()で新しい IE ウィンドウがすぐに表示され、すぐに閉じてしまうのでしょうか?

両方のシステムで Fiddler を調べたところ、違いが見つかりました。VM の下で、PDF を要求すると、HTTP ステータスは 206 で、これは部分的なコンテンツです。IE9 では、リクエストは 206 ではなく HTTP 200 です。

ここで何が起こっているのか、また WinXP IE7 インスタンスを修正する方法を誰かが説明できますか?

WinXP/IE7 のポップアップ ブロッカーの設定を調べて、使用しているドメインのポップアップを許可するように指示しました。ブロッカーも無効にしましたが、とにかく同じ問題が発生します。

4

1 に答える 1

0

async : false私はAJAX構成に含まれていませんでした。その後、IEは満足し、ファイルのダウンロードダイアログを表示します。

于 2013-01-23T14:16:37.913 に答える