js动态生成二维码

LinMeng 39 0

需求:项目需要根据链接实时生成二维码,当检测终端是PC时,将当前项目链接生成二维码供用户手机端使用

判断终端是否为mobile

function isMobile () {
  let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
  return flag;
}

链接准备

this.$store.state.getQRCodeUrl = document.URL;
//链接也可以用window.location.href 获取
 if (!window.common.isMobile()) {
     this.$router.push({path: '/QRCodepage'}); 
      return;
   } 

插件准备

QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。
下载命令 npm install qrcodejs2 --save

生成二维码

<template>
  <div class="QRCodePage">
      <div class="content">
        <div class="titleCen">请扫描二维码支付</div>
        <div id='qrcode' class="qrCode"></div>
      </div>
  </div>
</template>

<script>
import QRCode from 'qrcodejs2';
export default {
  name: 'QRCodePage',
  data () {
    return {
      url: ''
    };
  },
  created () {
    this.url = this.$store.state.getQRCodeUrl;
  },
  mounted () {
    this.createQRCode();
  },
  methods: {
    createQRCode () {
        var qrcode =  new QRCode('qrcode', {
          text: this.url,
          width: 300,
          height: 300,
          colorDark: '#000000',
          colorLight: '#ffffff',
          correctLevel: QRCode.CorrectLevel.H
        });
        qrcode.makeCode(this.url); // 生成二维码
    }
  }

};
</script>

<style lang='less'>
.QRCodePage{
    background-color: #f7f7f7;
    height: 100%;
    .content{
        width: 300px;
        height: 300px;
        margin: 20px auto;
        .titleCen{
          text-align:center;
        }
        .qrCode{
          width: 90%;
          margin:20px auto;
        }
    }
}

</style>

###注意: 在本地调试时报错-----vue.runtime.esm.js?2b0e:1888 Error: code length overflow. (1676>1056) 发布到测试上用测试域名就好了

收藏
评论区