文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

vue怎么实现复制文字和图片

2023-07-05 05:15

关注

本篇内容主要讲解“vue怎么实现复制文字和图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现复制文字和图片”吧!

document.execCommand('copy')

在很久之前我们是使用document.execCommand('copy')来实现复制文本的,但是现在mdn上已经将这个命令废弃了。

当一个 HTML 文档切换到设计模式时,document暴露 execCommand 方法,该方法允许运行命令来操纵可编辑内容区域的元素。如果传入copy命令,那么就能实现复制的功能。

比如像下面这样

  // 复制文字  copyText(link, cb) {    let input = document.createElement('textarea');    input.style.cssText = 'position: absolute; top: 0; left: 0; opacity: 0; z-index: -10;';    input.value = link;    document.body.appendChild(input);    input.select();    document.execCommand('copy');    document.body.removeChild(input);    if (typeof cb === 'function') {      cb();    }  }

Clipboard

Clipboard 接口实现了 Clipboard API,如果用户授予了相应的权限,其就能提供系统剪贴板的读写访问能力。在 Web 应用程序中,Clipboard API 可用于实现剪切、复制和粘贴功能。

方法

Clipboard提供了以下方法,方便我们读取剪切板的内容。

复制文本

复制文本的方法很简单,就是使用navigator.clipboard.writeText()方法。

具体代码实现如下:

copyTextToClipboard(text) {  return new Promise((resolve, reject) => {    navigator.clipboard.writeText(text).then(      () => {        resolve(true)      },      () => {        reject(new Error('复制失败'))      }    )  })}

复制图片

复制图片主要用到navigator.clipboard.write()方法。 因为我们在页面中通常是要根据一个img元素复制图片,主要实现思路如下:

具体代码实现如下:

  // 图片元素转base64  getBase64Image(img) {    let canvas = document.createElement('canvas');    canvas.width = img.width;    canvas.height = img.height;    let ctx = canvas.getContext('2d');    ctx?.drawImage(img, 0, 0, img.width, img.height);    let dataURL = canvas.toDataURL('image/png');    return dataURL;  },  // base64图片转为blob  getBlobImage(dataurl) {    let arr = dataurl.split(',');    let mime = arr[0].match(/:(.*?);/)[1];    let bstr = atob(arr[1]);    let n = bstr.length;    let u8arr = new Uint8Array(n);    while (n--) {      u8arr[n] = bstr.charCodeAt(n);    }    return new Blob([u8arr], { type: mime });  },  // 复制图片  copyImage(dom, cb) {    let dataurl = this.getBase64Image(dom);    let blob = this.getBlobImage(dataurl);    navigator.clipboard.write([      new window.ClipboardItem({        [blob.type]: blob      })    ]).then(function() {      if (typeof cb === 'function') {        cb();      }    }, function() {      console.log('图片复制失败!');    });  }

到此,相信大家对“vue怎么实现复制文字和图片”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯