js iframe 打印 打印預覽 頁眉頁腳的設置
1、window.print方式:
//jsp頁面 打印按鈕: <input type="button" value="打印" onclick="print();"> //js 中: function print(){ window.print(); //style樣式中,設置隱藏按鈕打印: <style> @media print { .noprint{display:none} } </style>
打印iframe:
<html xmlns="" > <head> <title>標題頁</title> <body> <input onclick='prn()' type=button value=print_Iframe$amp;>amp;$lt;br> <iframe id=myframe src=""$amp;>amp;$lt;/iframe> <script> function prn() { var win=window.open("about:blank") //打開一個空頁面 win.moveTo(100,100) //移動到指定位置 win.location=document.all.myframe.src //指定頁面的內容 win.print() //打印頁面 } </script> </body> </html>
2,WebBrowser控件方式
WebBrowser是IE內置的瀏覽器控件,無需用戶 下載 .
頁面上加上代碼
<object ID="WebBrowser" name="WebBrowser" WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'$amp;>amp;$lt;/object>
js:函數中加入代碼:
WebBrowser.ExecWB(6,1); //打印設置 WebBrowser.ExecWB(8,1); //打印預覽 WebBrowser.ExecWB(7,1); 關於這個組件還有其他的用法,列舉如下: WebBrowser.ExecWB(1,1) 打開 WebBrowser.ExecWB(2,1) 關閉現在所有的IE窗口,並打開一個新窗口 WebBrowser.ExecWB(4,1) 保存網頁 WebBrowser.ExecWB(6,1) 打印 WebBrowser.ExecWB(7,1) 打印預覽 WebBrowser.ExecWB(8,1) 打印頁面設置 WebBrowser.ExecWB(10,1) 查看頁面屬性 WebBrowser.ExecWB(15,1) 好像是撤銷,有待確認 WebBrowser.ExecWB(17,1) 全選 WebBrowser.ExecWB(22,1) 刷新 WebBrowser.ExecWB(45,1) 關閉窗體無提示
這種方式打印iframe:
window.parent.document.i1.window.WebBrowser.ExecWB(6, 1);
選擇你要的功能。
但是打印是會把整個頁面都打印出來的,頁面裏面有什麼東西就打印出來,我們有時候只需要打印數據表格,這時我們就要寫一個樣式了:把不想打印的部份隱藏起來:
樣式內容:
<style type="text/css" media=print>
.noprint...{display : none } </style>
3,打印iframe 中的內容:
主要語句:document.all.iframename.ExecWB(6,1); 便可以只打印iframe中的頁面。
document.all.iframename.ExecWB(7,1); 打印預覽
…………
使用這種方式打印不需要加:<object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'$amp;>amp;$lt;/object>
例如:
function printPage() { PageSetup_Null() ; document.all.iframename.ExecWB(6,1); } //打印預覽 function printPreview() { document.all.iframename.ExecWB(7,1); }
//設置網頁打印的頁眉頁腳爲空 function PageSetup_Null() { try{ var Wsh=new ActiveXObject("WScript.Shell"); Wsh.RegWrite("HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\header",""); //通過修改註冊表的方式 頁眉和頁腳也可以改成你想要的內容 Wsh.RegWrite("HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\footer",""); }catch(e){ alert(e.name+e.message); } }
通過:document.all.iframe.***的方式打印 不僅可以只打印本頁面中的iframe 還可以多層嵌套找到要打印的iframe
例如:
first.html
<body> firstpage <input type="button" onclick="printPreview()" value="打印預覽"> <input type="button" onclick="printPage()" value="打印"> <br/> <iframe name="iframe" width="500" src="secend.html"$amp;>amp;$lt;/iframe> </body>
secend.html
<body > secendpage <br/> <br/> <iframe name="i1" src="third.html"$amp;>amp;$lt;/iframe> <iframe name="i2" src="thirdd.html"$amp;>amp;$lt;/iframe> <br> </body>
third.html: 隨意吧
js:
//打印 function printPage() { //頁眉頁腳空…… 這裏沒寫了 iframe.document.all.i1.ExecWB(6, 1); " } //打印預覽 function printPreview() { iframe.document.all.i1.ExecWB(7, 1); }
於是 以此類推: 就可以實現任意的iframe嵌套打印和打印預覽問題了
例如從子頁面找父頁面打印也可:window.parent.document.all.i1.ExecWB(6, 1);
至於頁眉頁腳的設置問題我想再細說說
如果你按路徑打開註冊表 就一目瞭然
你可以通過更改註冊表裏的信息改變頁眉頁腳的任何設置
符號 含義
&w 網頁標題
&u 網頁地址 (URL)
&d 短日期格式(由“控制面板”中的“區域設置”指定)
&D 長日期格式(由“控制面板”中的“區域設置”指定)
&t 由 “控制面板”中的“區域設置”指定的時間格式
&T 24 小時時間格式
&p 當前頁碼
&P 總頁數
&b 文本右對齊(請把要右對齊的文字放在“&b”之後)
&b&b 文字居中(請把要居中的文字放在“&b”和“&b” 之間)
&& 單個 & 號 (&)
Wsh.RegWrite("HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\header","&b頁眉&b"); //設置頁眉居中
遺留問題:1,火狐的兼容問題 火狐裏 至今沒實現打印預覽
2,改變註冊表設置頁眉頁腳 畢竟不友好 希望有更好的方式
希望大蝦們幫幫忙
遺留問題已解決:
1,火狐 我找了個插件 效果還挺漂亮的 我已經上傳了 大家可以下載下來看看
2,沒有找到別的方式 最後還是選擇了修改註冊表
不過document.all.Iframe.ExecWB(6,1,2); 第三個參數設爲2 表示等待打印完成
剛開始試的時候發現他並不能等待打印完成再執行我要的函數 後來發現加上setTimeout 就好使了
所以我還是修改註冊表 等打印完成後再將註冊表改回來
//打印 function printPage() { //設置頁眉頁腳 PageSetup_Null() document.all.Iframe.ExecWB(6,1,2); //設置頁眉頁腳 setTimeout(" PageSetup_Default() ",200); }
採用這種方式打印完成後註冊表被修改被原來的值就可以了 最然沒弄明白爲什麼要加setTimeout() 但 真的好使 確實實現了 打印後 再把註冊表修改爲原來值