window.print()方法打印

由于项目中用到了打印功能,也在网上查询了些方法,总体来说有两个思路:

1. dom替换

2. 新窗口打印

dom替换会导致事件失效,如果重新加载的话又会影响到体验;而新窗口缺因为样式问题也不好解决,都不满足项目的需求,于是把自己的方法贴上来:

 function printMe (content) {
    var printDiv = document.createElement('div');
    printDiv.innerHTML = content.innerHTML;
    printDiv.style.position = 'fixed';
    printDiv.style.left = '0';
    printDiv.style.top = '0';
    printDiv.style.width = '100%';
    printDiv.style.height = '100%';
    printDiv.style.zIndex = '100000';
    printDiv.style.background = '#fff';
    printDiv.style.overflow = 'auto';
    document.body.appendChild(printDiv);
    window.print();
    document.body.removeChild(printDiv);
};

代码很简单,把要打印的内容放到一个新的div里,div宽高设置100%;position设为fixed或者absolute占满屏幕,把当前页面内容全部覆盖著,调用window.print()之后再把该div删除。这样既会使本来的样式生效,也不会有替换dom产生的各种问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值