2016-08-08 11 views
2

window.print()によって生成された印刷ウィンドウでユーザーが印刷をクリックしたかキャンセルしたかを判断する方法がないことはよく知られています。window.print()の後の確認メッセージ

私は、基本的にユーザーに印刷が正常に完了したかどうかを尋ねる次善のことに取り組んでいます。確認ボックスが、どのように印刷ウィンドウが最初に表示されることを確認することができず、印刷ウィンドウの前にポップアップし、

$(document).ready(function(){ 

    window.print(); 

    var a = confirm('Confirm printing as successfull and mark Job Cards as Released?'); 
    if(a == true) { 
     $.post('PrintSuccess'); 
     window.location = '/Menu'; 
    } 
}); 

トラブルです:

私は、これはありますか?

+0

'setTimeout()'? –

+0

クロムで動作するようには思われません –

答えて

2

コードブロックを実行する前に、必ずprint dialogが終了されていることを確認するには、いくつかの方法があります。ブラウザのサポートはさまざまなので、必要に応じて組み合わせる必要があります。以下のstackoverflowトピックを参照してください。

次のコードは、最新のブラウザで動作するはずです。

var printCompleteCallback = function() { 
    var conf = confirm('Confirm printing as successfull and mark Job Cards as Released?'); 
    if (conf) { 
     if (a == true) { 
      $.post('PrintSuccess'); 
      window.location = '/Menu'; 
     } 
    } 
} 

window.print(); 
if (window.onafterprint) { //check if browser supports window.onafterprint event handler (Firefox and IE) 
    $(window).one("afterprint", printCompleteCallback); 
} 
else { //Use setTimeout solution if onafterprint is not supported (Chrome) 
    setTimeout(printCompleteCallback, 0); 
} 
+0

クロムで動作するコードです。 if(window.onafterprint)ビットはどのように機能しますか? –

+0

ブラウザが 'onafterprint'イベントをサポートしているかどうかをチェックすることになっていますが、正しくはありません。 'if( 'onafterprint' in window)' –

+1

@ConnorBishop、 'window.onafterprint'は、印刷ダイアログが終了した後に起動されるイベントハンドラですが、[browser support](https://developer.mozilla。 org/en-US/docs/Web/API/WindowEventHandlers/onafterprint#Browser_compatibility)は非常に限られているためです。そこで、ブラウザがそれをサポートしているかどうかをチェックし、サポートされている場合はそれを使用します。ブラウザーがアフタープリントイベントをサポートしていない場合、 'setTimeout'ソリューション(chromeで動作する)にフォールバックします。私はそれを説明するコードにコメントを追加しました。 – Ozan

0
window.onafterprint = function() { 
    var a = confirm('Confirm printing as successfull and mark Job Cards as Released?'); 
    if(a == true) { 
     $.post('PrintSuccess'); 
     window.location = '/Menu'; 
    } 
} 
+0

私はクロムを使用しています。申し訳ありません –

関連する問題