js实现监听ctrl+v粘贴事件获取复制的内容,并把截取的图片转base64

6 篇文章 0 订阅
1 篇文章 0 订阅

          前景:在开发一个即时通信网页版的时候,客户提出要求添加截图功能,研究后发现不管是java还是js都不具备截图功能,除非引入第三方软件截图。看了一下微信的网页版发现微信也没有截图的功能。

         但本着客户是上帝的原则,为了满足客户的需求,最后我用html2canvs和cropper插件,在前端实现了把当前整个页面的document通过html2canvas转成base64图片,然后用cropper截图插件让客户裁剪相应的位置发送,功能算是实现了可惜客户不满意,因为只能截取浏览器中的信息,电脑其他的地方的信息截取不到。经过和客户沟通后,客户做出了让步说:可以用键盘的PrScrn(Print Screen键)截屏或是第三方截屏(比方说微信截屏、截屏软件等)然后ctrl+v粘贴的时候可以裁剪或是直接发送。

        所以就有了这篇文章,在 JavaScript 中,可以通过添加 'paste' 事件监听器来监听粘贴事件,然后通过获取要粘贴的类型判断是文字还是文件,如果是文字直接获取处理,下面代码直接把处理逻辑去了console了出来,如果是文件通过FileReader读取文件转成base64。以下是实现方法: 


    document.addEventListener('paste', (event) => {
        var clipboardData, pastedData;
        // 防止默认行为
        event.preventDefault();    
        // 使用事件对象的clipboardData对象获取剪切板数据
        clipboardData = event.clipboardData || window.clipboardData;
        if (clipboardData.types && clipboardData.types.length) {
          if (clipboardData.types.includes('text/plain')) {
            pastedData = clipboardData.getData('Text');
          } else if (clipboardData.types.includes('Files') && clipboardData.files && clipboardData.files.length) {
            const reader = new FileReader();
            // 文件读取成功完成后的处理
           reader.onload = (e) => {

              pastedData = e.target.result;
              // 在这里使用base64String,例如可以将其设置为图片的src
              console.log(pastedData);
            };
            // 以DataURL的形式读取文件
            reader.readAsDataURL(clipboardData.files[0]);
          }
        }
        console.log(pastedData);
    });

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值