4

印刷する必要のあるテキストと印刷リンクを含むモーダルダイアログがあります。したがって、印刷を押すと、Chromeでプレビューダイアログを開くのに約30秒かかります(Firefox、Safari、つまり問題ありません)。その理由は何ですか?

ダイアログ:

<div id="dialog">
    <div id="to_print_data">
    My data to print!!!!!
    </div>
    Click <a href="#" onclick="window.print(); return false;"> here</a>
</div> 

    <style>
    @media print {
      body * {
        visibility:hidden;
      }

    #to_print_data, #to_print_data * {
        visibility:visible;
      }
      #to_print_data {
        position:absolute;
        left:0!important;
        top:0!important;
        border:0!important;
        font-size:16px!important;
      }
    }
    </style>

アップデート:

いくつかのスクリプトを実行しているバックグラウンドで、POSTリクエストを行う原因が見つかりました。リクエストは、印刷が終了してから約30秒後に保留ステータスになります-ダイアログが表示されます。スクリプトを削除せずに、POSTリクエストが終了するのを待っている印刷時に、この動作を防ぐにはどうすればよいですか?

4

2 に答える 2

4

原因を見つけました。バックグラウンドで何らかの拡張機能を実行している場合は、POSTリクエストが行われます。そして、このリクエストのステータスは約30秒保留中です。印刷が終了した後にのみ、ダイアログが表示されます。そのため、保留中のリクエストは、開かれる印刷ダイアログをブロックします

于 2013-10-28T08:35:51.280 に答える
0

私の場合、ここで説明するように、ページを更新するまでまったく印刷されませんでした。Chrome:window.print()印刷ダイアログは、ページの再読み込み(javascript)の後でのみ開きます

@noypiscripterの答えは私のためにそれを解決しました:

function printPage() {
    window.print();

    //workaround for Chrome bug - https://code.google.com/p/chromium/issues/detail?id=141633
    if (window.stop) {
        location.reload(); //triggering unload (e.g. reloading the page) makes the print dialog appear
        window.stop(); //immediately stop reloading
    }
    return false;
}
于 2014-06-22T23:25:44.883 に答える