• 适用于vue项目的打印插件


    此方法只适用于现代浏览器,IE10以下就别用了

    // 使用时请尽量在nickTick中调用此方法
    //打印
    export default (refs, cb) => {
        let cloneN
        if (Array.isArray(refs)) {
            cloneN = refs[0].cloneNode(true)
        } else {
            cloneN = refs.cloneNode(true)
        }
        const body = document.getElementsByTagName('body')[0]
        cloneN.style.position = 'absolute'
        cloneN.style.zIndex = '9999999999'
        cloneN.style.top = 0
        cloneN.style.left = 0
        cloneN.style.width = '100%'
        cloneN.style.minHeight = '100%'
        cloneN.style.background = '#fff'
        body.appendChild(cloneN)
    
        // 配置样式
        const bt = body.style.cssText
        body.style.overflowY = 'auto'
        body.style.cloneN = 'auto'
        const eld = document.querySelector('.el-dialog__wrapper')
        const dc = eld.style.cssText
        eld.style.display = 'none'
        // 图片全部加载完成后再开始打印
        let imgs = cloneN.getElementsByTagName('img')
        let len = imgs.length
        let ni = 0
    
        const print = () => {
            ni += 1
            if (ni === len) {
                // 开始打印
                window.print()
                // 还原样式
                body.style = bt
                eld.style = dc
                // 移除节点
                body.removeChild(cloneN)
                // 回调
                if (cb) {
                    cb()
                }
            }
        }
    
        for (let i of imgs) {
            i.onload = () => {
                print()
            }
            i.onerror = () => {
                print()
            }
        }
    }
    
    
  • 相关阅读:
    WPF获取分辨率2
    怎样将UNIX Shell作为Concurrent Program来运行
    转 FRM40654 Record has been updated Requery block to see change
    各模组相关interface
    EBS 表后缀的含义
    Oracle Form開發Form消息提示
    EBS多组织(OU
    EBS 开发基础知识
    FORM:在不同窗口中传递参数
    AR 金额计算
  • 原文地址:https://www.cnblogs.com/lvyueyang/p/9847813.html
Copyright © 2020-2023  润新知