調用打印預覽(兼容除火狐以外各瀏覽器)


 思路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