调用打印预览(兼容除火狐以外各浏览器)


 思路1:建立一个DIV(容器),绝对定位,宽高100%,遮住整个屏幕。里面放置打印内容。首先DISPLAY:NONE.调用打印命令以后,DISPLAY:BLOCK.打印完后再隐藏。

      但是在IE下,会打印所有没有隐藏的界面,即使内容被遮盖。所以要用否定选择器找到BODY下的所有子元素,设置visibility:hidden属性。打印完后再visibility:visible。

    CSS如下

    .printContent{

        position:absolute;

      display:none;   

      background:#fff;

      width:100%;

      height:100%;

      z-index:9999;

    }

思路2:利用media="print"的媒体查询,定义样式(IE8及以上支持)

  css:

       <style media="print">

      .noprint{display:none}//给不需要打印的地方添加此类。

     </style>

 

关于JS:

   在ghrome/opera/下,直接调用window.print()命令就会有打印预览框。

     在火狐下,window.print()由于安全性无法调用打印预览,只有选择打印机的打印命令框。

     在IE下,此功能的实现主要是利用WebBrowser控件的函数接口来实现打印、打印预览(默认的)、页面设置(默认的)。

    将此句贴到页面BODY内。

    <object ID='WebBrowser' WIDTH=0 HEIGHT=0
    CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'>

  调用以下命令即可:
  //打印
  WebBrowser1.ExecWB(6,1);
  //打印设置
  WebBrowser1.ExecWB(8,1);
  //打印预览
  WebBrowser1.ExecWB(7,1);
  如果打印的页面是iframe,调用:
  window.parent.document.iframename.ExecWeb(7,1);//iframename为iframe的name
  如果打印的页面是当前页面:调用:
  window.parent.document.all.ExecWeb(7,1);

  谷歌下的JS:
  
  var divPrint = $('.printContent');
  divPrint.css({

   'display':'block'
  });
  window.print();
  divPrint.css('display','none');

  IE下的JS:
  
  $('body').children(":not(.printContent)").css({
   'visibility':"hidden",
  });
  divPrint.css({
   'display':'block'
  });

  if(iframeName != undefined){//如果打印页面是iframe
   window.parent.document.all[iframeName].ExecWB(7,1);
  }
  else{
   document.all.WebBrowser.ExecWB(7,1);
  }

  $('body').children(":not(.printContent)").css({
   'visibility':"visible"
  });
  divPrint.css('display','none');


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM