通常后台系统都会有打印导出的功能,在前端,打印调用的是window.print()调用打印机,而我们又不想为了打印而把整个系统的body内容给替换掉。

方案一:通过离屏iframe实现不跳页面,不替换原本内容打印。

  在html中写入iframe标签,使其定位到不可见的位置,然后获取对应的dom,替换掉contentWindow.body.innerHTML = 需要打印的内容,打印内容的样式需要自己加入到内容中,通过行内样式或者用style标签包裹,如果有系统的css文件可以将其转化为字符串用style引入。不用离屏的话就需要控制iframe的显示隐藏,在调用print之前显示,调用之后隐藏,print是同步操作,所以可以在print后写入对应操作。

方案二:通过window.print.call(dom)来实现打印,print接口必须是窗口类型才能调用。