手动点击 打印
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-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现