思路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');