js实现复制粘贴功能
在项目中使用到复制粘贴功能,虽然网上有很多大牛封装了很多的插件,但是还是想不去使用插件,就像自己来实现这个功能。
初步想法:
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实现复制粘贴功能相关推荐
- JS一键复制粘贴功能
使用clipboard.js 实现: 它是一个不需要Flash,就能实现文本复制或者剪切到剪切板的轻量级插件: 具体实例: 可以使用cdn 或者直接下载 设置好引用路径. <!DOCTYPE h ...
- 最新js实现复制粘贴功能实例
功能:实现鼠标点击复制内容 描述:使用与手机网站.pc等端. 实现点击复制粘贴功能的代码实例: function common_copy(text){if(text.indexOf('-') !== ...
- 利用JS实现复制/粘贴功能
1.最基本的复制 Java代码 <script language="javascript"> function readTxt() { alert(window.cli ...
- js实现粘贴板js插件clipboard.js实现一键复制粘贴功能
js实现粘贴板js插件clipboard.js实现一键复制粘贴功能 简介 下载 引入插件 使用 一个节点的复制 多个节点的复制 剪切文本框 复制输入框 简介 clipboard.js 提供了一种更好. ...
- JS实现复制粘贴的方式
最近在项目中遇到了需要复制粘贴的功能,虽然是个简单的小功能,我竟然没做过,所以根据查找的资料还有实践在这里总结一下: JS实现复制粘贴方式: 原生通过document.execCommand('cop ...
- clipboard + element-ui +vue 实现复制粘贴功能与提示
结合 clipboard.js 实现复制.粘贴功能 剪切功能参考官方文档,个人认为用不太上(有富文本编辑器的时候可能才用得上,也或许不需要自己实现) 想要知道怎么使用,优先参考官方文档(如何指定要复制 ...
- html5屏蔽ios长按复制,html5+CSS 实现禁止IOS长按复制粘贴功能
html5+CSS 实现禁止IOS长按复制粘贴功能 因为在移动端APP需要实现长按执行别的事件,但是在iOS系统有默认的长按选择复制粘贴,禁止此功能在网上找了很多资料,最终整理出目前最好的解决方法. ...
- 软件测试面试题-如何测试复制粘贴功能
复制粘贴是电脑最普遍的两个操作了,在面试的过程中,有学生被问到如何测试复制粘贴功能的时候,我个人觉得你可以这样去回答 更多学习资源,公众号主页点击领取资料 查看我评论区置顶 首先,这道题目你甚至可以发 ...
- Windows下Ubuntu子系统,开启复制粘贴功能方法
Windows下Ubuntu子系统,开启复制粘贴功能方法 问题 我在Microsoft Store下载了Ubuntu后,进入系统发现复制粘贴不上去 解决方法 右键单击我们打开的Ubuntu终端顶部,下 ...
最新文章
- new HashMap<String, Object>();
- C/C++中volatile关键字的作用
- Windows 2008 防火墙开放端口
- 一位清华在校生的报告
- 图解设计模式,看完秒懂!!!
- python的标准随机数生成器模块_Python:带均值和标准差的随机数生成器
- 零基础学大数据分析现实吗
- python制作微信个人二维码怎么做_如何用Python制作微信的好友背景墙?
- 全球首个大规模虐童图像数据库!标记15万图像、20类信息,自动判断图片是否违法​...
- 两张图看清英伟达RTX 20系列显卡的新变化
- request获取登录用户名
- 小张初识c语言的成长经历NO.1
- 第二章 pandas基础
- chrome不显示数学公式
- 先验分布、后验分布、似然函数
- 世上安得两全法,不负如来不负卿?
- 淘宝排名查询接口,关键词排名api,淘宝商品排名查询api,淘宝关键词搜索查询接口
- Python Matplotlib 花式绘图和中文字符显示、散点图、设置网格和散点函数拟合
- Error 1935 错误!
- 计算机网络基础第一章(思维导图)
热门文章
- matlab曲线拟合 最低点,Matlab曲线拟合 最小二乘法 polyfit【转】
- java哈希_Java如何采用哈希码实现分类(以员工分配为例)
- 代做html网页多少钱,代做排名网站有吗,做排名帮你实现财富自由
- gacutil不是内部或外部命令_Win7命令提示符输入taskkill提示不是内部或外部命令...
- NOIP模拟测试7「方程的解·visit」
- MS Lync2010客户端开发体会
- 【小记】-006--关于高度塌陷的问题
- bzoj4443:[Scoi2015]小凸玩矩阵
- C++内存管理——指针数组
- 网页 添加QQ/MSN/旺旺 在线聊天代码