这是一个不是很罕用的性能,但却是在不经意间晋升用户体验。
应用场景
用户通过界面搜寻出一组数据,认真一看这组数据切实是太重要了,重要到须要向上汇报(拍马屁)。
此时的用户能够抉择: 抱着电脑 || 截图发送 || 发送链接和查问条件。
但咱们做为前端开发人员,是能够向用户提供另外一种抉择: 将查问后果打印,以纸质的模式进行信息传递。有时候,实实在在拿在手里的货色更有感觉。
无纸办公的状况就不反驳了,咱们只是多出一种抉择,而非必选。
实现形式
比方咱们当初有这么一组很有价值的数据(敲黑板,这都是我致力码进去的那种自已都不违心看的博文),当初要实现将这些博文打印的性能须要以下几个步骤。
1、生成根底款式
在网页中展现的表格成果总是形形色色,想打印到纸张上是须要调整下展示款式。这些款式以字符串行式后行存储,会在前面的步骤中应用到。
const style = '<style>\n'
+ 'table{width: 100%;border-collapse: collapse;border-spacing: 0;}\n'
+ 'th,td{height: 18px;padding:11px;border: 1px solid #999;font-size: 12px;color: #666;}\n'
+ 'th{color: #333}\n'
+ 'a{color: #666; text-decoration:none;}\n'
+ 'tr[empty-template] td{text-align: center}\n'
+ '</style>';
为什么不必模板字符串?因为这种状况下通过模板字符串增加的 style 会多出不必要的换行与空格,齐全没有必要先应用模板字符串再用正则replace
。
2、关上一个新的窗口
const printWindow = window.open();
是的,这一步就这么简略。(感觉能够和第三步合并?)
3、打印
如果原 table 没有须要移除的构造或款式,间接打印即可。
// 这里咱们假如 table 是须要打印的那个表格,style 就是第一步中拼接的款式
printWindow.document.write(style + table.outerHTML);
printWindow.document.close();
printWindow.print();
printWindow.close();
那如果原 table 存在简单的构造或款式须要革除,那么就须要手动清理一份洁净的 element outerHTML
了。
以下是打印预览时的成果:
相干实现
在表格组件 GridManager 中实现了该性能,形式有点差别。点击这里查看源码