2

window.printダイアログのcloseイベントにフックして、関数を呼び出すにはどうすればよいですか?

jQueryプラグインのDatatablesとTabletoolsプラグインを使用して、Webページからデータを印刷しています。

デフォルトの動作

  • テーブルデータをフォーマットして、ページに表示される要素のみになるようにします
  • ブラウザの印刷ボタンをクリックするようにユーザーに指示するdivを表示します。
  • ユーザーが印刷した後、ユーザーはを押す必要Escがあります。これにより、印刷ボタンがクリックされる前と同じようにページが表示されます。

デフォルトのデータテーブルの例

望ましい行動

  • データを同じようにフォーマットします
  • 印刷ボタンをクリックする手順を表示しないでください
  • 電話window.print();
  • 印刷ダイアログを閉じたら、印刷ボタンがクリックされる前と同じようにページを表示します。
4

1 に答える 1

1

JavaScript は不要です。この CSS ソリューションはいかがですか。これは、すべてのブラウザーでも機能するはずです。

@media print
{
 /* Add here any selector for ('root') elements you do not want to be printed. */
 .header, .footer, .floating-print-instructions
 {
  display: none;
 }
}

セレクターが、display: blockその属性内に明示的な (および同様の)要素を含むstyle(または JavaScript を使用する) 要素と一致する場合、おそらく引き続き表示されることに注意してください。

また、一部のブラウザー (Internet Explorer?) にはbeforeprintafterprintイベントがあると思いますが、それらをリッスンしてそれに応じて動作できると思いますが、これは実際にはクロスブラウザーの実装ではなく、プレーンな CSS よりも少し複雑です。

キーアップ/キーダウン イベントをリッスンして、ユーザーが Cotrol + P を押したことを知ることができます。ただし、ユーザーは他の方法 (メニュー、ツールバー ボタン) を使用して印刷することができます。また、一部のブラウザー (Chrome) では、window.print()部分的に非同期 (window.close()呼び出しのみが同期的に実行されます) であるため、コードはその後に実行される場合があります。

于 2012-09-05T18:18:07.377 に答える