React 中实现复制到剪切板功能
React 中实现复制到剪切板功能
- 前言
- 最终实现方法
- 中间踩坑
前言
最近有一个需求是在文章列表中实现一个【复制链接】的功能。如图:
点击【复制链接】之后,链接将复制到剪切板。可在浏览器中进行粘贴打开。
最终实现方法
最终的实现方法很简单,引一个插件,一行代码搞定。这里演示一个简单的 Demo。
- 下载 copy-to-clipboard
npm i copy-to-clipboard --save
引入 copy 方法,在点击按钮时调用 copy 方法
import copy from ‘copy-to-clipboard’;
function coppyUrl(url){
copy(url);
alert(‘复制成功’);
};
function App(){
return
中间踩坑
刚开始在网上找了各种 js 实现复制链接的办法。要么出现浏览器兼容性,要么主要是针对原生 DOM 操作。在此记录一下。
1. 只兼容 IE 浏览器
效果:
原理:
使用 window.clipboardData.setData 方法。不过该方法只兼容 IE 浏览器。
<!DOCTYPE html>
Document
2. 浏览器自带的方法实现原生 DOM 复制
效果:
原理:
- 使用文本域或者输入框的
input.select()
方法。 执行浏览器的
document.execCommand("copy")
命令。<!DOCTYPE html>
Document
兼容 Firefox 48.0、Chrome 60.0、IE 8 。
3. 使用 clipboard 插件
效果:
原理:
- 引入 clipboard 插件。
- 在点击元素中,使用 data-clipboard-action 指定操作类型(copy or cut)。使用 data-clipboard-target 指定复制的目标元素。
实例化 ClipboardJS 对象,参数为点击元素的类名或者id名。
注意:根据 clipboard 插件的版本不同,有的需要实例化 Clipboard 对象。<!DOCTYPE html>
Document
还没有评论,来说两句吧...