在项目中使用到复制粘贴功能,虽然网上有很多大牛封装了很多的插件,但是还是想不去使用插件,就像自己来实现这个功能。


初步想法:
1. 获取到需要复制的内容,这里我可以将需要复制的内容放在input或者textarea的value中,然后使用input的select()方法来获取到值;
2. 获取到值了,那我下一步就是复制了,document.execCommand()方法可以操作很多功能,这里我可以使用他的copy复制选中的文字到粘贴板的功能;
3. 复制功能实现了,但是这个input或者textarea不是我页面布局中所需要的,那我可以将input或者textarea设置成透明的;
代码实现:
1. js:import React, {PureComponent} from 'react';import PropTypes from 'prop-types';import './index.less'class CopyClip extends PureComponent {static propTypes = {text: PropTypes.any, //文字内容ID: PropTypes.string};static defaultProps = {ID: 'copy-clip-textarea',};constructor(props) {super(props);this.state = {}}componentWillMount() {const {text} = this.props;this.setState({text})}componentWillReceiveProps(nextProps) {const {text} = nextProps;this.setState({text})}handleCopy = () => {let {ID} = this.props;let range, selection;let input = document.getElementById(ID);input.select();  // 获取到需要复制的内容if (input.value && ((typeof input.select) == 'function')) {range = document.createRange();  // 创建range对象selection = document.getSelection();  // 返回一个Selection 对象,表示用户选择的文本范围或光标的当前位置。range.selectNode(input);selection.addRange(range);input.setSelectionRange(0, input.value.length);  // 为当前元素内的文本设置备选中范围let successful = document.execCommand('copy');  //  使用document.execCommand()方法, copy指令复制选中的文字到粘贴板的功能if (!successful) {this.props.onCopy(false);window.clipboardData.setData('text', this.state.text);  // 解决部分浏览器复制之后没有粘贴到粘贴板,使用浏览器自带的粘贴板} else {this.props.onCopy(true)}} else {this.props.onCopy(false)}};render() {const {text} = this.state;return (<div className="common-copy-clip" onClick={() => this.handleCopy()}><textarea readOnly="readonly" id={this.props.ID} value={text}></textarea>{this.props.children}</div>)}}export default CopyClip2. css
.common-copy-clip {
position: relative;
textarea {position: absolute;top: 0;opacity: 0;
}

}

原文地址:https://segmentfault.com/a/1190000016894376

更多专业前端知识,请上 【猿2048】www.mk2048.com

js实现复制粘贴功能相关推荐

  1. JS一键复制粘贴功能

    使用clipboard.js 实现: 它是一个不需要Flash,就能实现文本复制或者剪切到剪切板的轻量级插件: 具体实例: 可以使用cdn 或者直接下载 设置好引用路径. <!DOCTYPE h ...

  2. 最新js实现复制粘贴功能实例

    功能:实现鼠标点击复制内容 描述:使用与手机网站.pc等端. 实现点击复制粘贴功能的代码实例: function common_copy(text){if(text.indexOf('-') !== ...

  3. 利用JS实现复制/粘贴功能

    1.最基本的复制 Java代码 <script language="javascript"> function readTxt() { alert(window.cli ...

  4. js实现粘贴板js插件clipboard.js实现一键复制粘贴功能

    js实现粘贴板js插件clipboard.js实现一键复制粘贴功能 简介 下载 引入插件 使用 一个节点的复制 多个节点的复制 剪切文本框 复制输入框 简介 clipboard.js 提供了一种更好. ...

  5. JS实现复制粘贴的方式

    最近在项目中遇到了需要复制粘贴的功能,虽然是个简单的小功能,我竟然没做过,所以根据查找的资料还有实践在这里总结一下: JS实现复制粘贴方式: 原生通过document.execCommand('cop ...

  6. clipboard + element-ui +vue 实现复制粘贴功能与提示

    结合 clipboard.js 实现复制.粘贴功能 剪切功能参考官方文档,个人认为用不太上(有富文本编辑器的时候可能才用得上,也或许不需要自己实现) 想要知道怎么使用,优先参考官方文档(如何指定要复制 ...

  7. html5屏蔽ios长按复制,html5+CSS 实现禁止IOS长按复制粘贴功能

    html5+CSS 实现禁止IOS长按复制粘贴功能 因为在移动端APP需要实现长按执行别的事件,但是在iOS系统有默认的长按选择复制粘贴,禁止此功能在网上找了很多资料,最终整理出目前最好的解决方法. ...

  8. 软件测试面试题-如何测试复制粘贴功能

    复制粘贴是电脑最普遍的两个操作了,在面试的过程中,有学生被问到如何测试复制粘贴功能的时候,我个人觉得你可以这样去回答 更多学习资源,公众号主页点击领取资料 查看我评论区置顶 首先,这道题目你甚至可以发 ...

  9. Windows下Ubuntu子系统,开启复制粘贴功能方法

    Windows下Ubuntu子系统,开启复制粘贴功能方法 问题 我在Microsoft Store下载了Ubuntu后,进入系统发现复制粘贴不上去 解决方法 右键单击我们打开的Ubuntu终端顶部,下 ...

最新文章

  1. new HashMap<String, Object>();
  2. C/C++中volatile关键字的作用
  3. Windows 2008 防火墙开放端口
  4. 一位清华在校生的报告
  5. 图解设计模式,看完秒懂!!!
  6. python的标准随机数生成器模块_Python:带均值和标准差的随机数生成器
  7. 零基础学大数据分析现实吗
  8. python制作微信个人二维码怎么做_如何用Python制作微信的好友背景墙?
  9. 全球首个大规模虐童图像数据库!标记15万图像、20类信息,自动判断图片是否违法​...
  10. 两张图看清英伟达RTX 20系列显卡的新变化
  11. request获取登录用户名
  12. 小张初识c语言的成长经历NO.1
  13. 第二章 pandas基础
  14. chrome不显示数学公式
  15. 先验分布、后验分布、似然函数
  16. 世上安得两全法,不负如来不负卿?
  17. 淘宝排名查询接口,关键词排名api,淘宝商品排名查询api,淘宝关键词搜索查询接口
  18. Python Matplotlib 花式绘图和中文字符显示、散点图、设置网格和散点函数拟合
  19. Error 1935 错误!
  20. 计算机网络基础第一章(思维导图)

热门文章

  1. matlab曲线拟合 最低点,Matlab曲线拟合 最小二乘法 polyfit【转】
  2. java哈希_Java如何采用哈希码实现分类(以员工分配为例)
  3. 代做html网页多少钱,代做排名网站有吗,做排名帮你实现财富自由
  4. gacutil不是内部或外部命令_Win7命令提示符输入taskkill提示不是内部或外部命令...
  5. NOIP模拟测试7「方程的解·visit」
  6. MS Lync2010客户端开发体会
  7. 【小记】-006--关于高度塌陷的问题
  8. bzoj4443:[Scoi2015]小凸玩矩阵
  9. C++内存管理——指针数组
  10. 网页 添加QQ/MSN/旺旺 在线聊天代码