JS实现复制功能的三种方式,有坑

简介

业余时间写了一个在微信里面分享X宝优惠券的小工具,里面有用到复制淘口令的功能,当时以为实现起来很…简单,但是一不留神还是踩了个坑,接下来就给大家分享一下。
JS实现复制功能的三种方式,有坑_第1张图片

  • 页面布局代码传送门:https://www.jianshu.com/p/fceec5bf1beb

第一种:浏览器Copy功能

HTML代码



JS代码



原理:

  • 获取textarea文本域数据
  • 选中复制对象
  • 执行浏览器复制命令

在微信开发工具里面一切正常,但是在真机使用时iphone 有些机型不能复制到数据。
现象之一:iphone X第一次打开页面复制正常,但是同一个页面第二次及以后就不能再复制到数据。

第二种:clipboard.js

下载地址:https://github.com/zenorocha/clipboard.js/archive/master.zip

HTML代码

 
 

JS代码




JS实现复制功能的三种方式,有坑_第2张图片

浏览器支持

  • Chrome 42 +
  • Edge12 +
  • Firefox 41 +
  • IE 9 +
  • Opera 29 +
  • Safari 10 +

使用总结:PC上基本可以畅通无阻,移动端要改源码,在实现过程中还解决了一系列问题,例如:动态数据复制、div换button 、和项目中本身代码的禁用事件冲突等,并且还要做机型适配。

第三种:纯JS,对第一种进行改进

网上有很多的例子,总结起来就两种:1、clipboard.js 2、纯JS 经过取舍clipboard.js放弃,因为不确定因素太多。那么就修改第一种方法的实现。

JS代码

function copyTkl() {
   const range = document.createRange();
   range.selectNode(document.getElementById('tkl'));
   const selection = window.getSelection();
   if (selection.rangeCount > 0) selection.removeAllRanges();
      selection.addRange(range);
      document.execCommand('copy');
     alert("复制淘口令成功......");
}

经测试,目前还没有发现问题,有兴趣的可以尝试一下!

你可能感兴趣的:(纯HTML,java-web)