需要: 微信小程序中生成二维码,不可对二维码进行截图(截图的时候页面提醒),
问题1. onLoad 中监听手机的截屏动作,同时管制页面显示
//在onLoad 中监听手机的截屏动作,同时管制页面显示onLoad(){ //二维码上面显示实时工夫 this.time = utils.showTime(new Date()); setInterval(() => { this.time = utils.showTime(new Date()); }, 1000) //在onLoad 中监听手机的截屏动作 //noScreenshot 管制页面切换的数据 let that = this; wx.onUserCaptureScreen(function (res) { that.noScreenshot = false; setTimeout(() => { that.noScreenshot = true; }, 3000); }) }, // 问题:// 不能够应用v-if 进行页面状态的切换,v-if为false时dom元素间接销毁,当切换为true的时候,canvas是没有重建的,会显示为空白,这里躲避能够应用v-show 来解决canvas的显示,这里还将提醒页面的定位层级加高了,遗记这里的解决是否是因为v-show为false的时候canvas没有暗藏的起因了,前面应用的时候能够验证一下
问题2. 页面重绘的过程中canvas的地位变动响应很慢
//问题总结:canvas 在绘制的过程中应用的全部都是CPU,没有应用GPU硬件加速,导致绘制很慢呈现卡顿的状况,//这里的需要是一个申请能够邀请多集体,用户二维码上面会显示以后曾经认证的伙伴人数和根本信息,能够折叠,在折叠的过程中,页面尺寸变动时,canvas的地位呈现卡顿,//wxml <view class="wrap-qrcode-info"> <canvas class="wrap-qrcode-canvas" canvasId='qrcode'></canvas> <image :src="loadImagePath"></image> </view> //js //生成canvas 实例 drawQrcode({ width: 140, height: 140, canvasId: 'qrcode', _this: this.$scope, text: applyUserInfo.visitor_code });//生成实例之后将其转化为img,将url复制给wxml中的image 标签 let that = this; setTimeout(function () { wx.canvasToTempFilePath({ width: 140, height: 140, canvasId: 'qrcode', success: function (res) { var tempFilePath = res.tempFilePath; that.loadImagePath = tempFilePath; }, fail: function (res) { console.log(res); } }); }, 500);//工夫须要调整,确保是canvas context 曾经生成 //这里须要留神的是wxml中其实是将canvas地位定位到页面看不到的地位,显示的二维码其实是依赖二维码生成的图片,