手动点击 打印
// 最初调用函数
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;
margin:0 4.5cm 0 0;// 调控打印视图的间距
} 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) {
return res(dom);
} } imgs.forEach((img) => { img.addEventListener('load', check); img.addEventListener('error', check); }); }); }
本文来自博客园,作者:玖捌,转载请注明原文链接:https://www.cnblogs.com/fyh0912/p/16119498.html
浙公网安备 33010602011771号