vue实现打印浏览器页面功能(两种方法)_vue调用浏览器打印功能

  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) {
Vue.prototype.$print = Print
}

export default MyPlugin


## main.js里引入



import Print from ‘./plugs/print’
Vue.use(Print)


## 使用



export default {
data(){
return {}
},
methods: {
// 点击打印
printDemo(){
setTimeout(() => {
this. p r i n t ( t h i s . print(this. print(this.refs.print)
}, 100);
}
},
mounted() {

}

}


4.注意事项 需使用ref获取dom节点,若直接通过id或class获取则webpack打包部署后打印内容为空  
 5.指定不打印区域


方法1. 添加no-print样式类


不要打印我  
 方法2. 自定义类名


不要打印我  
 this. 
 
 
 
 
 p 
 
 
 r 
 
 
 i 
 
 
 n 
 
 
 t 
 
 
 ( 
 
 
 t 
 
 
 h 
 
 
 i 
 
 
 s 
 
 
 . 
 
 
 
 print(this. 
 
 
 print(this.refs.print,{‘no-print’:‘.do-not-print-me-xxx’}) // 使用


如果图片出不来 打印出不来 等情况


参考下面代码



const res2 = await fnApi(orderId);
let myBlob = new Blob([res2.data], { type: ‘image/jpeg’});
var href = URL.createObjectURL(myBlob); // 创建对象超链接
// 此时拿到图片地址 href,后面直接使用该地址即可
let img = new Image();
img.src = href;
img.onload = () => {
this.printsrc = href;
this.$nextTick(() => {

总结

  • 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue中,禁止缩放浏览器窗口大小有几种方法可以实现。 第一种方法是通过CSS样式来禁止缩放。在HTML文件的`<head>`标签内,可以添加以下CSS样式代码: ```css <style> body { zoom: reset !important; -moz-transform: scale(1) !important; -moz-transform-origin: top left !important; -o-transform: scale(1) !important; -o-transform-origin: top left !important; -webkit-transform: scale(1) !important; -webkit-transform-origin: top left !important; } </style> ``` 上述代码中,`zoom`属性用于禁止缩放,`transform`属性用于重置缩放,并通过`!important`规定样式的优先级。 第二种方法是在Vue组件中使用JavaScript来禁止缩放。在Vue组件的`<script>`标签内,可以添加以下代码: ```javascript mounted() { window.addEventListener('resize', this.handleResize); }, methods: { handleResize() { window.resizeTo(window.innerWidth, window.innerHeight); } }, beforeDestroy() { window.removeEventListener('resize', this.handleResize); } ``` 上述代码中,`mounted`钩子函数用于在组件挂载时添加窗口缩放事件监听器,`handleResize`方法用于重新设置浏览器窗口大小为当前窗口大小。 需要注意的是,以上两种方法可能会因为浏览器的安全策略而被禁用,所以在实际开发过程中,建议综合考虑用户体验和浏览器安全性,并根据实际需求选择合适的方法来禁止缩放浏览器窗口大小。 ### 回答2: 在Vue中禁止缩放浏览器窗口大小需要通过一个简单的CSS样式来实现。首先,我们可以选择在Vue组件的根元素上添加以下样式: ```css <style> html, body { overflow: hidden; } </style> ``` 在上述代码中,我们将根元素的html和body标签的overflow属性都设置为hidden,这将禁止用户对整个窗口进行任何缩放操作。 此外,如果我们只想禁止水平或垂直方向的窗口缩放,可以将overflow-x或overflow-y属性值设置为hidden。例如,如果我们只想禁止水平缩放,可以将样式修改如下: ```css <style> html, body { overflow-x: hidden; } </style> ``` 需要注意的是,以上样式只是在Vue组件中禁止窗口缩放的一种方法。如果我们需要在整个网页中禁止窗口缩放,可以在全局CSS文件或HTML文件中使用相同的样式。 最后,需要提醒的是,虽然可以通过这种方式禁止窗口缩放,但这可能会违反用户体验的原则。因此,在实际应用中,我们应该慎重考虑是否真的需要禁止窗口缩放,并根据具体情况进行权衡。 ### 回答3: 要禁止缩放浏览器窗口大小,可以使用CSS样式和Vue的指令来实现。 首先,在Vue组件的模板中,添加一个元素作为容器来包裹内容,可以使用一个div元素,并给它一个唯一的id标识,例如"app"。 接下来,在Vue组件的样式中,使用CSS样式来设置这个容器的宽度和高度,并将"overflow"属性设置为"hidden",这样就可以阻止浏览器的滚动条出现。可以在Vue组件的style标签中添加如下样式: ``` <style> #app { width: 100%; height: 100%; overflow: hidden; } </style> ``` 最后,使用Vue的指令来动态绑定这个容器的大小,以使其与浏览器窗口大小保持一致。可以在Vue组件的script标签中添加如下代码: ``` <script> export default { mounted() { window.addEventListener('resize', this.handleResize); this.handleResize(); }, methods: { handleResize() { const app = document.getElementById('app'); app.style.width = window.innerWidth + 'px'; app.style.height = window.innerHeight + 'px'; } }, destroyed() { window.removeEventListener('resize', this.handleResize); } } </script> ``` 上述代码中,我们通过监听"resize"事件来调用handleResize方法,并在组件挂载时添加事件监听器。在handleResize方法中,我们获取到容器的DOM元素,并将其宽度和高度设置为浏览器窗口的宽度和高度。同时,在组件销毁时,移除事件监听器。 通过以上方法,我们就可以禁止缩放浏览器窗口大小,并且保持Vue组件与浏览器窗口的大小一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值