手动点击 打印
2022/4/8 23:26:32
本文主要是介绍手动点击 打印,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
// 最初调用函数 function submit() { const style = getStyle(); // 需要打印的数据获取innerHTML const container = getContainer(document.querySelector('.next-drawer-body')?.innerHTML); document.body.appendChild(style); document.body.appendChild(container); getLoadPromise(container).then(() => { window.onbeforeprint = function () { // 将一些不需要打印的元素隐藏 console.log(container.querySelector('.funcButton'), 'qianqi1'); container.querySelector('.funcButton')?.setAttribute('style', 'display:none'); }; window.print(); window.onafterprint = function () { // 放开隐藏的元素 console.log(container.querySelector('.funcButton'), 'wanceng1'); container.querySelector('.funcButton')?.setAttribute('style', 'display:block'); }; document.body.removeChild(style); document.body.removeChild(container); }); } // 设置打印样式 function getStyle() { const styleContent = `#print-container { display: none; } @media print { body > :not(.print-container) { display: none; } html, body { display: block !important; } #print-container { display: block; } }`; const style = document.createElement('style'); style.innerHTML = styleContent; return style; } // 清空打印内容 function cleanPrint() { const div = document.getElementById('print-container'); if (div) { (document.querySelector('body') as any).removeChild(div); } } // 新建DOM,将需要打印的内容填充到DOM function getContainer(html) { cleanPrint(); const container = document.createElement('div'); container.setAttribute('id', 'print-container'); container.innerHTML = html; return container; } // 图片完全加载后再调用打印方法 function getLoadPromise(dom) { let imgs = dom.querySelectorAll('img'); imgs = [].slice.call(imgs); if (imgs.length === 0) { return Promise.resolve(); } let finishedCount = 0; return new Promise((res) => { function check() { finishedCount++; if (finishedCount === imgs.length) { res; } } imgs.forEach((img) => { img.addEventListener('load', check); img.addEventListener('error', check); }); }); }
这篇关于手动点击 打印的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16使用vue3+springboot构建简单Web应用教程
- 2024-11-15全栈开发项目实战:从入门到初级项目的实现
- 2024-11-15数据库项目实战:从入门到初级应用教程
- 2024-11-15IDEA项目实战入门教程
- 2024-11-15IT编程项目实战:新手入门的全面指南
- 2024-11-15Java开发项目实战:新手入门与初级技巧
- 2024-11-15Java零基础项目实战:从入门到独立开发
- 2024-11-15MyBatis Plus教程:入门与基础操作详解
- 2024-11-15MyBatis-Plus教程:新手入门与实战技巧
- 2024-11-15MyBatis教程:从入门到实践