javascript页面打印
打印本身比较简单,但要考虑到具体的需求。比如
1. 多浏览器:
if (isIE()) { //打印预览 WebBrowser1.execWB(7, 1); } else { window.print(); }
如代码所示, IE浏览器与其他浏览器的使用的方式是不一样的,如在chrome浏览器中使用window.print显示的是打印预览,而在IE中显示的是打印界面(选择打印机),如果想在IE中显示打印预览,则需要在代码中增加如下的标签,在使用如上的WebBrowser1.
<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>
2. 局部打印。
一般js打印功能其实就是调用的页面的打印功能, 所以默认是打印整个页面,也就是document.body。如果要打印部分页面的话,可以有三种方案:
一是把要打印的DIV区域赋值给document.body, 待打印完成后,再还原。代码如下:
var bodyHtml = document.body.innerHTML;//获取当前页的html代码 var divPrint = document.getElementById('divprint'); if (divPrint) { document.body.innerHTML = divPrint.innerHTML; if (isIE()) { if (WebBrowser1) { //打印预览 WebBrowser1.execWB(7, 1); } window.close(); } else { window.print(); } } document.body.innerHTML = bodyHtml;
二是把要打印的区域在新的页面中打开,再执行打印。
这里有个小提示,在新的页面中打开,我的处理方法是打开新页面时,隐藏要打印的页面,直接弹出打印预览,打印完成后直接关闭窗口,这样体验会好些。
三是使用CSS样式,这样就不打印指定样式的DIV,如下代码
<style type="text/css" media="print"> .noprint { display: none; } </style>
3. 取消页眉页角
打印预览时我们会发现,页眉页角的东西不是我们想要的,如果想要去掉的,最好的方式还是通过页面设置
如果是IE浏览器的话,可以通过代码来设置,但是需要对浏览器进行设置。
代码如下:
这段代码是从网上找地,特此说明!!!
var hkey_root,hkey_path,hkey_key; hkey_root="HKEY_CURRENT_USER"; hkey_path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; //网页打印时清空页眉页脚 function pagesetup_null() { try { var RegWsh = new ActiveXObject("WScript.Shell"); hkey_key = "header" RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "") hkey_key = "footer" RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "") } catch (e) { console.dir(e); } } function pagesetup_default() { try { var RegWsh = new ActiveXObject("WScript.Shell") hkey_key = "header" RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "&w&b页码,&p/&P") hkey_key = "footer" RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "&u&b&d") } catch (e) { console.dir(e); } }