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 件のコメント:
コメントを投稿