js实现浏览器的打印功能——路径打印

简介: js实现浏览器的打印功能——路径打印

或多或少在前端页面开发的过程中会遇到一些网页需要这样的功能——打印页面,没错,就是页面打印,那个window.print的功能,但是怎么才能写一个又好用又不会有太多问题和性能的打印用能的,那个他来了(引用了element-ui的消息提示组件$message做消息提示)

printReport () {
      if (!this.reportUrl) { // 用来判断打印的地址是否存在,你们随意,我的是业务需要
        this.$message.error('等待报告加载完成,请稍后重试')
      }
      this.$message.warning('正在唤起打印服务请稍等'); // 自己的提示语,你们随便
      if (this.reportStart) return;
      this.reportStart = true;
      var iframe = window.document.createElement('iframe');
      try {
        iframe.id = 'print_iframe';
        iframe.style = "position: absolute;top: 0;left: 0;z-index:-1;display:none";
        document.body.appendChild(iframe);
        let ifr = window.frames["print_iframe"].contentDocument;
        let ifrImage = window.document.createElement('img');
        ifrImage.src = this.reportUrl;
        ifr.body.style = "margin:0px"
        ifr.body.append(ifrImage);
        let ifrImageObj = new Image();
        ifrImageObj.src = this.reportUrl;
        ifrImageObj.onload = () => {
          window.frames["print_iframe"].contentWindow.print();
          document.body.removeChild(window.frames["print_iframe"]);  //打印之后记得移除dom,避免内存溢出
          this.reportStart = false;
        }
      } catch (error) {
        iframe.setAttribute("id", "print_iframe");
        iframe.setAttribute("style", "position: absolute;top: 0;left: 0;z-index:9999;display:none");
        window.document.body.appendChild(iframe);
        let ifr = window.frames["print_iframe"].contentWindow || window.frames["print_iframe"];
        let ifrImage = window.document.createElement('img');
        ifrImage.src = this.reportUrl;
        ifr.document.body.setAttribute("style", "margin:0px;size: portrait;");
        ifr.document.body.appendChild(ifrImage);
        let ifrImageObj = new Image();
        ifrImageObj.src = this.reportUrl;
        ifrImageObj.onload = () => {
          ifr.window.focus();
          ifr.window.print();
          window.document.body.removeChild(document.getElementById('print_iframe'));
          this.reportStart = false;
        }
      }
    }
结束语:关注我,少走弯路!

image.png

相关文章
|
1月前
|
Web App开发 前端开发 JavaScript
折腾之王:JavaScript之父Brave浏览器与BAT的诞生
2015年,JavaScript之父Brendan Eich再次创业,推出Brave浏览器和加密货币Basic Attention Token(BAT),旨在颠覆传统广告行业。Brave屏蔽广告、保护隐私,加载速度快;BAT则通过奖励机制让用户、内容创作者和广告主三方受益。尽管面临用户习惯和巨头竞争的挑战,Brave已拥有超4000万月活跃用户,成为全球增长最快的隐私浏览器,引领Web3生态发展。
112 22
折腾之王:JavaScript之父Brave浏览器与BAT的诞生
|
25天前
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
43 10
|
3月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
124 63
|
1月前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
52 8
|
2月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
3月前
|
移动开发 JavaScript 前端开发
一些处理浏览器兼容性问题的JavaScript库
这些库在处理浏览器兼容性问题方面都有着各自的特点和优势,可以根据具体的需求和项目情况选择合适的库来使用,从而提高代码的兼容性和稳定性,为用户提供更好的体验。同时,随着浏览器技术的不断发展,还需要持续关注和学习新的兼容性解决方案。
131 48
|
3月前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式
|
3月前
|
JavaScript 前端开发 容器
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
65 5
|
3月前
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
67 1
|
3月前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
508 9

热门文章

最新文章