JavaScript丨打印指定 DOM 节点

阅读: 评论:0

JavaScript丨打印指定 DOM 节点

JavaScript丨打印指定 DOM 节点

打印指定 DOM 节点

使用时直接调用此函数,最后几行图片相关代码根据实际需求修改

/*** @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小时内删除。

标签:节点   JavaScript   DOM
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23