js實現頁面局部彈窗列印

來源:互聯網
上載者:User

標籤:

原文出自:http://www.haorooms.com/post/css3media

 

在網頁中經常看到有列印功能,點擊之後,只針對特定地區進行的列印。網上看了一下,大體上有2中實現方法,一種是用css @media控制,另一種是直接用js控制。下面分別來對其進行說明一下!

一、css控制網頁局部列印

關於css控制列印,css @media 參考地址:http://www.haorooms.com/post/css3media (主要是介紹Media Query方法)也引進了css2的media

<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />

media可以是all,也可以是print ,加入是print,那麼這個css只有在列印的時候才載入。那麼這樣就好辦了,我們可以寫針對css列印的樣式,有些地方在列印的時候不顯示,那麼直接用display:none來設定不就可以了嘛!

除了上面的這種寫法之外,還可以這麼寫:

@media print { .noprint { display: none; }} 

當你列印的時候noprint 類下面的所有內容不顯示,不列印的時候顯示。

舉例:

<div class="noprint" >  <table style="margin:0 auto;width:500px;">      <tr align="center" ><td>        <object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"                      width="0">        </object>    <input type="button" value="列印" onclick="document.all.WebBrowser.ExecWB(6,1)">    <input type="button" value="版面設定" onclick="document.all.WebBrowser.ExecWB(8,1)">  <input type="button" value="直接列印" onclick="document.all.WebBrowser.ExecWB(6,6)">    <input type="button" value="預覽列印" onclick="document.all.WebBrowser.ExecWB(7,1)">      </td></tr>  </table></div>  

這些內容在列印之前是顯示的,當你點擊列印的時候,會用上面的樣式,不顯示。達到了局部列印的效果!

二、js局部列印

直接上案例:

 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>js局部列印案例</title> 6 <script type="text/javascript">    7     function doPrint() {     8         bdhtml=window.document.body.innerHTML;     9         sprnstr="<!--startprint-->"; // 列印開始標識   10         eprnstr="<!--endprint-->";   //列印結束標識 11         prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);    12         prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); 13     //新開啟視窗列印(需要引用原頁面樣式檔案)14       var newWin = window.open("",‘newwindow‘,‘height=700,width=750,top=100,left=200,toolbar=no,menubar=no,resizable=no,location=no, status=no‘);15       newWin.document.write(prnhtml);16       newWin.print();17 18       //當前視窗列印19         window.document.body.innerHTML=prnhtml; 20         window.print();    21 }    22 </script>23 </head>24 25 <body>26 <p>1不需要列印的地方</p>27 <p>2這裡不要列印啊</p>28 <!--startprint--><!--注意要加上html裡star和end的這兩個標記~-->29 <h1>列印標題</h1>30 <p>列印內容~~</p>31 <!--endprint-->32 <button type="button" onclick="doPrint()">列印</button>33 <p>不列印的地方</p>34 <p>2</p>35 </body>36 </html>

 

註:

1、JS開啟新視窗並填充內容的兩種方式:

  i、write內容

var newWin=window.open("childWindow.html");newWin.document.write("");newWin.document.write(document.getElementByIdx_x("fatherWindowTable").outerHTML);

  這種方式缺點是新視窗一直處於Loading狀態。

  ii、innerHTML內容

var newWin=window.open("childWindow.html");newWin.onload=function(){newWin.document.title=‘childWindowTitle‘;newWin.document.getElementByIdx_x(‘childWindowId‘).innerHTML=document.getElementByIdx_x("fatherWindowTable").outerHTML;}

 

2、Js開啟新視窗:Window.open() 方法參數:

  其中yes/no也可使用1/0;pixel value為具體的數值,單位象素。
參數 | 取值範圍 | 說明 
alwaysLowered | yes/no | 指定視窗隱藏在所有視窗之後 
alwaysRaised | yes/no | 指定視窗懸浮在所有視窗之上  depended | yes/no | 是否和父視窗同時關閉 
directories | yes/no | Nav2和3的目錄欄是否可見  height | pixel value | 視窗高度 
hotkeys | yes/no | 在沒功能表列的視窗中設安全退出熱鍵 
innerHeight | pixel value | 視窗中文檔的像素高度 
innerWidth | pixel value | 視窗中文檔的像素寬度  location | yes/no | 位置欄是否可見 
menubar | yes/no | 功能表列是否可見 
outerHeight | pixel value | 設定視窗(包括裝飾邊框)的像素高度 
outerWidth | pixel value | 設定視窗(包括裝飾邊框)的像素寬度 
resizable | yes/no | 視窗大小是否可調整  screenX | pixel value | 視窗距螢幕左邊界的像素長度 
screenY | pixel value | 視窗距螢幕上邊界的像素長度  scrollbars | yes/no | 視窗是否可有滾動欄 
titlebar | yes/no | 視窗題目欄是否可見  toolbar | yes/no | 視窗工具列是否可見 
Width | pixel value | 視窗的像素寬度  z-look | yes/no | 視窗被啟用後是否浮在其它視窗之上

 

js實現頁面局部彈窗列印

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.