使用时直接调用此函数,最后几行图片相关代码根据实际需求修改
/*** @param {Element} dom 节点* @param {String} title 标题* @param {String} specialStyle CSS选择器,打印保留样式*/
function printPartial(dom, title = document.title, specialStyle = '') {if (!dom) returnlet copyDom = ateElement('span')const styleDom = document.querySelectorAll('style')const titleDom = ateElement('title')titleDom.innerText = titlecopyDom.appendChild(titleDom)Array.from(styleDom).forEach((item) => {if (item.childNodes.length > 0 &&item.childNodes[0].nodeValue.indexOf(specialStyle) !== -1) {copyDom.appendChild(item.cloneNode(true))}})copyDom.appendChild(dom.cloneNode(true))const htmlTemp = copyDom.innerHTMLcopyDom = nullconst iframeDom = ateElement('iframe')// 隐藏 iframeconst attrObj = {height: 0,width: 0,border: 0,wmode: 'Opaque'}const styleObj = {display: 'none'}ies(attrObj).forEach(([key, value]) =>iframeDom.setAttribute(key, value))ies(styleObj).forEach(([key, value]) => {iframeDom.style[key] = value})document.body.insertBefore(iframeDom, document.body.children[0])const iframeWin = tWindowconst iframeDocs = iframeWin.documentiframeDocs.body.innerHTML = htmlTemp// 多页打印ElementsByTagName('body')[0].setAttribute('style', 'overflow: visible!important; margin: 0')// 如有图片需等待图片加载完成const img = ElementsByClassName('img')[0]if (img) {load = function () {iframeWin.focus()iframeWin.print()}} else {iframeWin.focus()iframeWin.print()}
}
本文发布于:2024-01-30 23:08:46,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170662732723504.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |