代码

插件地址:https://github.com/xyl66/vuePlugs_printjs

1. 打印插件属性方法 定义-print.js

// 打印类属性、方法定义
/* eslint-disable */
const Print =function(dom, options) {if (!(this instanceof Print)) return new Print(dom, options);this.options = this.extend({'noPrint': '.no-print'}, options);if ((typeof dom) === "string") {this.dom = document.querySelector(dom);} else {this.dom = dom;}this.init();};Print.prototype = {init: function () {var content = this.getStyle() + this.getHtml();this.writeIframe(content);},extend: function (obj, obj2) {for (var k in obj2) {obj[k] = obj2[k];}return obj;},getStyle: function () {var str = "",styles = document.querySelectorAll('style,link');for (var i = 0; i < styles.length; i++) {str += styles[i].outerHTML;}str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";return str;},getHtml: function () {var inputs = document.querySelectorAll('input');var textareas = document.querySelectorAll('textarea');var selects = document.querySelectorAll('select');for (var k in inputs) {if (inputs[k].type == "checkbox" || inputs[k].type == "radio") {if (inputs[k].checked == true) {inputs[k].setAttribute('checked', "checked")} else {inputs[k].removeAttribute('checked')}} else if (inputs[k].type == "text") {inputs[k].setAttribute('value', inputs[k].value)}}for (var k2 in textareas) {if (textareas[k2].type == 'textarea') {textareas[k2].innerHTML = textareas[k2].value}}for (var k3 in selects) {if (selects[k3].type == 'select-one') {var child = selects[k3].children;for (var i in child) {if (child[i].tagName == 'OPTION') {if (child[i].selected == true) {child[i].setAttribute('selected', "selected")} else {child[i].removeAttribute('selected')}}}}}return this.dom.outerHTML;},writeIframe: function (content) {var w, doc, iframe = document.createElement('iframe'),f = document.body.appendChild(iframe);iframe.id = "myIframe";iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";w = f.contentWindow || f.contentDocument;doc = f.contentDocument || f.contentWindow.document;doc.open();doc.write(content);doc.close();this.toPrint(w);setTimeout(function () {document.body.removeChild(iframe)}, 100)},toPrint: function (frameWindow) {try {setTimeout(function () {frameWindow.focus();try {if (!frameWindow.document.execCommand('print', false, null)) {frameWindow.print();}} catch (e) {frameWindow.print();}frameWindow.close();}, 10);} catch (err) {console.log('err', err);}}};const MyPlugin = {}MyPlugin.install = function (Vue, options) {// 4. 添加实例方法Vue.prototype.$print = Print}export default MyPlugin

2. 全局注册插件-main.js

import Print from './plugs/print'; // 引入附件的js文件
Vue.use(Print); // 注册

3.页面使用

<template><button @click="printClick">打印</button><section ref="print">组件或者dom都可以-这里是期望打印组件,并且隐藏组件不展示,直接打印<printPage class="printer"/></section>
</template>
<script>import printPage from './printPage';
export default {components: {printPage,},methods: {printClick(){this.$print(this.$refs.print);}}
}</script>
<style scoped  lang="scss">@media screen  {.printer {display: none;}}</style>

vue封装打印插件print.js实现打印组件功能相关推荐

  1. 前端网页打印插件print.js

    在前端开发中,想打印当前网页的指定区域内容,或将网页导出为多页的PDF,可以借助print.js实现,该插件轻量.简单.手动引入.不依赖其他库.示范项目github:https://github.co ...

  2. 原生js打印插件Print.js

    网页打印功能在很多的网站系统中都会使用到.比如说报表打印功能等. 以下是在Jquery插件库中找到的一款原生js打印插件,代码清洁简单,封装的代码也很好理解. index.html页面代码 <! ...

  3. jq jqprint 设置页脚_jquery打印插件jqprint.js使用教程

    最近的项目要使用web前端打印,本来在网上搜索了一下采用的js:window.print()局部打印网页的方法,但是经过实际测试发现兼容性不好,无奈只好再找其他方法,终于被我找到了一款基于jquery ...

  4. class jqprint 失效_web的各种前端打印方法之jquery打印插件jqprint实现网页打印

    web的打印方法具我自己懂得知道的有: 1.jquery插件jqprint实现 2.jqery打印插件printarea实现网页打印 3.css控制网页打印样式 jquery插件jqprint实现: ...

  5. 网页打印非常优秀的插件 Print.js

    前言:最近需要在网页上打印,网上找了很多,刚开始使用的 lodop打印插件来打印,没有达到理想的要求,它需要下载.区分浏览器的位数来安装.在vue使用时候必须写成内部样式,在笔记本样式失效等问题,使我 ...

  6. vue使用print.js实现打印功能,以及添加打印机

    print.js 一个javascript库,可以实现打印功能 github地址 github地址: https://github.com/crabbly/print.js 官网地址 https:// ...

  7. window.print();html 打印 之 print.js

    插件地址:Print.js - Javascript library for HTML elements, PDF and image files printing. 最近顾客需要把html打印,用w ...

  8. 前端使用print.js实现打印

    前言 项目中经常会用到前端调用浏览器打印的功能,也经常会遇到一些问题,写这篇文章是为了更好的梳理一下相关内容.下面的内容基于vue. 如果需要用到前端生成二维码可以看我的这篇文章:在vue项目中使用q ...

  9. Print.js实现打印pdf,HTML,图片(可设置样式可分页)

    目录 一.安装及引入Print.js 二.介绍 三.常用配置 四.具体使用 一.安装及引入Print.js 1.安装 npm install print-js --save //or yarn add ...

最新文章

  1. Cannot connect to database because the database client
  2. 第5章 Python 数字图像处理(DIP) - 图像复原与重建13 - 空间滤波 - 线性位置不变退化 - 退化函数估计、运动模糊函数
  3. http 请求头和响应头
  4. 生成指定大小的空文件
  5. uTorrent for mac(BT下载客户端)v1.8.7中文版
  6. 编程体系结构(01):Java编程基础
  7. mysql主从服务器配置
  8. eval() python_python的eval和exec的区别与联系
  9. Java程序员是如何面试上阿里巴巴,如何拿到年薪50W
  10. 技术点:注意Java的java.util.List.subList的坑
  11. 关于这个错误的不明原因的解决之道
  12. button组件 untiy_Unity自定义Button组件Transition
  13. 张珺 2015/07/13 个人文档
  14. DIV向上滚动(类似新闻)
  15. java中charconst_C语言常量
  16. JavaScript 透明背景色
  17. 最常被遗忘的 Web 性能优化:浏览器缓存
  18. MYSQL常用的数学函数
  19. scala sortBy and sortWith
  20. 个人网站选择支付宝api

热门文章

  1. .NET 5 自定义配置(动态配置,配置中心) 案例版
  2. 基于CyberGarage库的dlna开发(android)
  3. MTK 手机芯片 2014 Roadmap
  4. WEB数据库管理平台kb-dms:本地安装与启动教程【二】
  5. mysql 存储用户头像_node+vue用户头像处理上传并保存
  6. 三星S5PV210的启动
  7. jquery日历控件
  8. 人人贷等平台都在推的打折债转,背后有何玄机?
  9. 节拍器(HTML5版)
  10. 点云学习笔记19——使用pcl将bin文件转化为pcd文件