我正在一个用户可以打印测验或抽认卡的网站上工作。打印功能在除 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 表示每英寸点数。在 safari 中,我将 'dpiBoxHeight' 设为 96。
如果我更改,每英寸点数值高于 85 或将“dpiBoxHeight”更改为小于 85。不会打印空白页。但是,这会增加总打印页数。
请建议您是否有可用于防止在 Safari 上打印空白页并且在所有浏览器上兼容的解决方案/解决方法
预先感谢, 内哈