小工具知识网

当前位置: 首页 > 行业知识 > Vue+Element页面生成快照截图

行业知识

Vue+Element页面生成快照截图

2026-11-06 23:50:43 来源:互联网转载

页面部分index.php/tags-41973.html" >:

                    

js代码部分:

/** * 图片blob转图片base64 * @param blob */export const blobToBase64 = (blob) => {return new Promise((resolve, reject) => {const fileReader = new FileReader();fileReader.onload = (e) => {resolve(e.target.result);};// readAsDataURLfileReader.readAsDataURL(blob);fileReader.onerror = () => {reject(new Error('blobToBase64 error'));};});}import html2canvas from 'html2canvas';import { blobToBase64 } from '@/utils/helper.js';export default {  name: 'Home',  components: {    'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer'),  },  data() {    return {      tooltipRemark,      loading: false,      imgUrl: '',    };  },  methods: {    // 生成快照    newSnapShot() {      this.loading = true;      const { ClipboardItem } = window;      html2canvas(this.$refs.homePage).then((canvas) => {        // 将canvas转为blob对象        canvas.toBlob(async (blob) => {          if (typeof (navigator.clipboard) === 'undefined' && !ClipboardItem) {            await blobToBase64(blob).then((res) => {              this.imgUrl = res;              this.$message({                message: '快照生成成功',                type: 'success',                duration: 2000,              });            }).catch(() => {              this.$message({                message: '快照生成失败',                type: 'warning',                duration: 2000,              });            }).finally(() => {              this.loading = false;            });            return;          }          // 将blob对象放入剪切板item中          // eslint-disable-next-line no-undef          const data = [new ClipboardItem({ [blob.type]: blob })];          // 写入剪切板,成功会执行resolve,失败则走reject          await navigator.clipboard.write(data).then(() => {            this.$message({              message: '已保存到粘贴板',              type: 'success',              duration: 2000,            });            this.loading = false;          }, () => {            this.$message({              message: '保存截图失败',              type: 'warning',              duration: 2000,            });            this.loading = false;          });        }, 'image/png');      }).catch(() => {        this.loading = false;      });    },  },};

上一篇:Vue3 axios响应拦截器处理接口返回401未登录跳转登录页

下一篇:服务器阵列怎么安装系统?