通过定时器实现长按 1200 毫秒,然后执行保存二维码

var mm;
    //长按分享
    $('.qr_code').on('touchstart', function () {
      console.log('----------------')
      mm = setTimeout(function () {
        // shareToPage();
        var canvas = document.querySelector('.qr_code canvas');
        saveCanvas(canvas, '医生二维码');
      }, 1200);
    });
    $('.qr_code').on('touchend', function () {
      clearTimeout(mm);
    });
function getBlob(base64) {
      var mimeString = base64.split(',')[0].split(':')[1].split(';')[0]; // mime类型
      var byteString = atob(base64.split(',')[1]); //base64 解码
      var arrayBuffer = new ArrayBuffer(byteString.length); //创建缓冲数组
      var intArray = new Uint8Array(arrayBuffer); //创建视图
      for (var i = 0; i < byteString.length; i += 1) {
        intArray[i] = byteString.charCodeAt(i);
      }
      return new Blob([intArray], {
        type: mimeString
      });
    }
    function saveCanvas(canvas, fileName) {
      // let canvas = code._el.querySelector("canvas");//获取生成二维码中的canvas,并将canvas转换成base64
      var base64Text = canvas.toDataURL("image/png");
      var blob = getBlob(base64Text); //将base64转换成blob对象
      var link = document.createElement('a');
      var href = window.URL.createObjectURL(blob);
      link.href = href;
      link.download = fileName;  //a标签的下载属性
      document.body.appendChild(link); // firefox需要把a添加到dom才能正确执行click
      link.click();
      // 延时保证下载成功执行,否则可能下载未找到文件的问题
      setTimeout(function () {
        JSBridge.showToast('二维码保存成功')
        window.URL.revokeObjectURL(href); // 释放Url对象
        document.body.removeChild(link);
      }, 100);
    }

标签: none

添加新评论