IEに限って、onbeforeprintとonafterprintイベントが使える。
たとえば
flashなどのobjectを含むhtmlを印刷した場合にレイアウトが乱れることがあるので、印刷前にhtmlからobjectを削除して解決(代替画像に差し替える、といったこともできると思う)。
// このコードはjQueryに依存します // object要素を除去した印刷用html //(dhtml的に変化するページなので初めに印刷用htmlを記録しておく) var htmlStripped = $('body').html().replace(/<object.*<\/object>|<script.*<\/script>/ig, ''); // 関数定義 function fbef(){ // 印刷するにあたって、記録しておいた印刷用htmlを復活 $('body').html(htmlStripped); }; function faft(){ // キャッシュからリロード(これが無いと、 // サーバーからリロードしたhtmlが印刷されて // しまって"fbef"の処理が無意味になる) location.reload(false); }; // イベントハンドラを設定 window.onbeforeprint = fbef; window.onafterprint = faft;
0 件のコメント:
コメントを投稿