将文本复制到剪切板的多种解决方案(2018-08-17)

原生JS实现:

const copyText = (text) => {
  let e = document.createElement('input');
  e.setAttribute('id', 'copyTextBox');
  e.value = text;
  document.getElementsByTagName('body')[0].appendChild(e);
  document.getElementById('copyTextBox').select();
  document.execCommand("copy");
  document.getElementById('copyTextBox').remove();

  let tag = document.getElementById('tag');
  tag.style.display = "block";
  setTimeout(() => {
    tag.style.display = "none";
  }, 3000);
}

为什么非要写入document中呢,因为,如果不写入document中的话create的input标签是不可拓展的。简单来说就是不能给他value的。

     <div>
       <div className="share-overlay" onClick={stopProp}>
          <div className="share-link">
            <p>分享链接</p>
            <p>{url}</p>
            <Button onClick={() => copyText(url)}>复制链接</Button>
            <div className="success-tag" id="tag">复制成功</div>
          </div>
          <div className="qr-code">
            <QRCode value={url} size={100} />
            <span id="qr-code"></span>
            <p>扫描二维码 分享到微信</p>
          </div>
          <div className="clearfix"></div>
        </div>
      </div>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,268评论 19 139
  • 向量叉乘 1086题意:给出几条线段的始末点坐标,求解这几条线段共有几个交点。解题需要使用到向量的叉乘关系:a×b...
    碧影江白阅读 1,710评论 0 0
  • 隆维阅读 157评论 0 0
  • 早上把二宝收拾好交奶奶,出门,开车走在上班的路上,音乐响起,熟悉的老歌在车里流淌。拐弯,进隧道,出隧道,豁然开朗,...
    海蓝26阅读 933评论 15 11