javascript 局部打印(print area)
非标准、非通用的二进制插件打印方式此处不叙。
打印命令
标准的打印方法为调用window.print(),所有的现代浏览器都支持该方法。
还可以使用Print命令调用Document.execCommand(),也就是:
1
document.execCommand('Print')
虽然所有的桌面浏览器都支持,但这个方法是非标准的。
execCommand的接口规格:
1
bool = document.execCommand(aCommandName, aShowDefaultUI, aValueArgument)
局部打印方法
Javascript局部打印大约有一下这几种方法:
- print css方式
html支持print css,这是专用于打印设备的,而通常的css用于显示设备
1 | <link rel="stylesheet" href="print.css" media="print" /> |
可以使用print css将无需打印的区域隐藏掉,而需要打印的区域重新设置适合打印的样式,打印时直接调用window.print()即可。
这种打印方式页面不会看到变化,但是样式的调整可能会比较繁琐。
- screen css方式
使用通常的CSS,在打印之前将无需打印的部分从页面上隐藏,需要打印的区域冲洗设置适合打印的样式。打印完成后再恢复样式。打印时会看到页面的变化。
- body replace方式
打印之前将页面的body内容替换为需要打印的区域,打印完毕后再恢复body的内容。打印时会看到页面的变化。
这种方式与上种方法虽然做法不同,但其实质是相同的,即讲当前页面显示的内容设置要打印的内容,打印完毕后再恢复页面。
- iframe方式
打印时生成一个iframe嵌入到主页面中,iframe的内容即为需要打印的内容,然后调用iframe的print()方法就可以了。iframe其实就是一个window。
用iframe的好处是不用弹出新窗口。
但是需要注意:
chrome从45.0开始,默认阻止iframe的print方法,除非iframe的沙箱属性有allow-modal值,并且设置了modal标志。
Starting with Chrome 45.0 print method is blocked inside an iframe unless its sandbox attribute has the value allow-modal and the modal flag is enabled.
- popup new window方式
new window方式其实与iframe方式基本一样,唯一的区别是需要弹出新窗口。很多浏览器对于弹出新窗口都有严格的管制策略,因此新窗口方式用户体验不佳。
总的来说,iframe的方式比较简单,用户体验也较佳。
===
[erq]