新的浏览器局部打印实现方法

背景

最近在做开发平台,其中涉及到局部打印的功能,将此功能做为开发平台的一个通用功能,从网上搜了一些解决方案和开源js组件,测试的结果都不满意,大多是将打印的内容放在一个iframe内,去打印iframe里面的内容,对性能影响比较大,特别是要打印的内容比较多的情况,而且效果有可能跟实际显示的不一样,干脆还是自己想办法实现吧,后来自己琢磨出了另一种实现方法,和大家一起分享下,谁有更好的解决方案欢迎交流

思路

思路说起来也比较简单,所谓局部打印就是只打印页面中的一部分(如果是打印整个页面就没问题了,直接window.print()就可以了),打印的时候把其他不需要的部分隐藏起来,完成打印后再恢复显示就可以了,但是注意隐藏不要使用 display:none 的样式,要是有占位隐藏 visibility:hidden;

上代码


用到jquery了,所以要将jquery库加进来   

function printArea(id){
    var box=$("#"+id);
    var pbox;
    pbox=box.parent();
    while(true){
        pbox.children().addClass("print_hide");
        box.removeClass("print_hide");
        box.addClass("print_parent");
        if(pbox.get(0).tagName=="BODY"){
            break;
        }
        box=pbox;
        pbox=pbox.parent();
    }
    window.print();
}

源代码上传为附件

你可能感兴趣的:(js,jquery,局部打印)