关于html网页打印新招

//本打印方法:
//1.不仅不会丢失原网页样式,更不会破坏原页面中的事件;
//2.保证固定宽度居中打印,还不会出现多余的空白页。
//参数:id页面元素的id值,widthFit宽度自适应[不传或为假,宽度固定且内容居中]
var print = function(id,widthFit){
    var obj = document.getElementById(id);
    if(!obj) {
        layer.alert('当前没有打印区域');
        return false;
    }
    var oldHtml = document.body.innerHTML;
    var root = $(':root').html();

    var w = $(obj).width();
    var printDiv = '<div style="display: table; margin:0 auto;width: '+w+'px">'+obj.innerHTML+'</div>';
    if(widthFit) printDiv = '<div style="display: table; margin:0 auto;">'+obj.innerHTML+'</div>';

    root = root.replace(oldHtml,printDiv);
    var newWin = window.open();
    newWin.document.write(root);
    setTimeout(function () {
        newWin.print();
        newWin.close();
        },150);
}

本方法基于jquery,有兴趣的朋友可以改成纯javascript。

以前没有用setTimeout,导致页面没有加载完成,所以有时打印空内容。