1. ホーム
  2. javascript

[解決済み] window.print()の終了を検出する方法

2023-05-12 20:13:58

質問

私のアプリケーションでは、次のようなユーザー向けのバウチャーページを印刷しようとしました。

  var htm ="<div>Voucher Details</div>";
  $('#divprint').html(htm);
  window.setTimeout('window.print()',2000);

' divprint ' は div で、バウチャーの情報を保存しています。

これは動作し、印刷ページが表示されます。しかし、私はユーザーが ' print または close をブラウザのポップアップ印刷ダイアログで表示します。

例えば、ポップアップウィンドウを閉じた後、ユーザーを別のページにリダイレクトさせたい。

window.application.directtoantherpage();//a function which direct user to other page

ポップアップ印刷ウィンドウが閉じられたとき、または印刷が終了したとき、どのように判断すればよいのでしょうか?

どのように解決するのですか?

afterprintイベントをリッスンすることができます。

https://developer.mozilla.org/en-US/docs/Web/API/window.onafterprint

window.onafterprint = function(){
   console.log("Printing completed...");
}

window.matchMediaを使って、別の方法でこの機能を得ることができるかもしれません。

(function() {

    var beforePrint = function() {
        console.log('Functionality to run before printing.');
    };

    var afterPrint = function() {
        console.log('Functionality to run after printing');
    };

    if (window.matchMedia) {
        var mediaQueryList = window.matchMedia('print');
        mediaQueryList.addListener(function(mql) {
            if (mql.matches) {
                beforePrint();
            } else {
                afterPrint();
            }
        });
    }

    window.onbeforeprint = beforePrint;
    window.onafterprint = afterPrint;

}());

出典 http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/