ユーザーがページを印刷したときに JavaScript イベントをトリガーすることは可能ですか? ライブラリは画面には適していますが印刷には適していないため、ユーザーがページを印刷することを選択したときに、javascript ライブラリへの依存関係を削除したいと思います。
これを達成する方法はありますか?
ユーザーがページを印刷したときに JavaScript イベントをトリガーすることは可能ですか? ライブラリは画面には適していますが印刷には適していないため、ユーザーがページを印刷することを選択したときに、javascript ライブラリへの依存関係を削除したいと思います。
これを達成する方法はありますか?
Google からのこの回答に出くわした人のために、問題を解決してみましょう。
Ajay が指摘したように、印刷のために発生するイベントが 2 つありますが、十分にサポートされていません。私が読んだ限りでは、それらは Internet Explorer と Firefox (6+) ブラウザーでのみサポートされています。これらのイベントは window.onbeforeprint と window.onafterprint で、(ご想像のとおり) 印刷ジョブの前後に発生します。
ただし、Joe のリンク ( https://stackoverflow.com/a/9920784/578667 ) で指摘されているように、すべてのケースで正確に実装されているわけではありません。ほとんどの場合、両方のイベントがダイアログの前に発生します。また、印刷ダイアログ中にスクリプトの実行が停止され、両方のイベントが同時に発生する場合があります (ダイアログが完了した後)。
これら 2 つのイベントの詳細 (およびブラウザーのサポート) については、次を参照してください。
https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeprint
https://developer.mozilla.org/en-US/docs/DOM/window.onafterprint
簡単に言えば、印刷の流れに干渉したい場合は、干渉しないでください。印刷後にコードをトリガーしたい場合は、期待どおりに機能しません。ブラウザーのサポートが不十分であることを想定して、適切に機能を低下させてください。
上書きすることで実行できますwindow.onbeforeprint
。
window.matchMedia("print").addListener(function() {alert("Print Dialog open.")})
Chrome を使用すると、より不可解なものも機能することがわかりました。
この議論の余地のある機能は、ユーザーがページを印刷するのを思いとどまらせるために使用できます。
Scribdで初めて遭遇しました。そこで、メニュー コマンドを使用して印刷ダイアログを開くと、ページ コンテンツがグレー表示され、ページを印刷できない理由を説明する警告ポップオーバー メッセージが表示されます。(完全な分析のための注意: そのページでは、control-p もオーバーライドされているため、印刷ダイアログを開くために使用することはできません。さらに、コンテンツを非表示にするプリンター出力用の @media CSS があります。すべて Firefox でテスト済みです。 )。
印刷ダイアログが表示される前、またはドキュメントがプリンター キューに送信された直後に何かを実行するシナリオがある場合は、以下のイベント window.onafterprint 、 window.onbeforeprint を使用できます。