ユーザーがクイズやフラッシュカードを印刷できるサイトに取り組んでいます。印刷機能は、Safari を除くすべてのブラウザー (IE9、Firefox、Chrome) で正常に動作します。Safari でクイズを印刷すると、余分な空白ページが印刷されます。ピクセル対ポイントの比率を計算するロジックが問題を引き起こしていることがわかりました。これが私のコードのサンプルです。
function getHeight(elem) {
var elem_height = 0;
if (typeof elem.innerHeight != 'undefined') {
elem_height = elem.innerHeight;
} else {
elem_height = elem.clientHeight;
}
return parseInt(elem_height);
}
var dpiBoxHeight = getHeight(document.getElementById('dpiBox'));
if (dpiBoxHeight < 1) dpiBoxHeight = 96;
var pixelPointRatio = 72 / dpiBoxHeight;
「dpiBox」は空の div で、CSS ではデフォルトの高さを 1 インチに定義しています。
値 72 は、1 インチあたりのポイントを表します。サファリでは、「dpiBoxHeight」を 96 として取得しています。
変更すると、1 インチあたりのポイント数を 85 より大きくするか、「dpiBoxHeight」を 85 未満に変更します。空白のページは印刷されません。ただし、これにより全体の印刷ページ数が増加します。
空白のページが Safari で印刷されるのを防ぐために使用でき、すべてのブラウザーで互換性のある解決策/回避策があるかどうかを提案してください。
前もってありがとう、ネハ