js实现点击按钮复制文本功能


Posted in Javascript onJuly 20, 2020

最近遇到一个需求,需要点击按钮,复制 <p> 标签中的文本到剪切板

之前做过复制输入框的内容,原以为差不多,结果发现根本行不通

尝试了各种办法,最后使了个障眼法,实现了下面的效果

js实现点击按钮复制文本功能

一、原理分析

浏览器提供了 copy 命令 ,可以复制选中的内容

document.execCommand("copy")

如果是输入框,可以通过 select() 方法,选中输入框的文本,然后调用  copy 命令,将文本复制到剪切板

但是 select() 方法只对 <input> 和 <textarea> 有效,对于 <p> 就不好使

最后我的解决方案是,在页面中添加一个 <textarea>,然后把它隐藏掉

点击按钮的时候,先把 <textarea> 的 value 改为 <p> 的 innerText,然后复制 <textarea> 中的内容 

二、代码实现

HTML 部分

<style type="text/css">
 .wrapper {position: relative;}
 #input {position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;}
</style>

<div class="wrapper">
 <p id="text">我把你当兄弟你却想着复制我?</p>
 <textarea id="input">这是幕后黑手</textarea>
 <button onclick="copyText()">copy</button>
</div>

JS 部分

<script type="text/javascript">
 function copyText() {
  var text = document.getElementById("text").innerText;
  var input = document.getElementById("input");
  input.value = text; // 修改文本框的内容
  input.select(); // 选中文本
  document.execCommand("copy"); // 执行浏览器复制命令
  alert("复制成功");
 }
 </script>

亲测,Firefox 48.0,Chrome 60.0,IE 8 都能用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 插件开发备注
Aug 27 Javascript
JavaScript建立一个语法高亮输入框实现思路
Feb 26 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
JavaScript操作Oracle数据库示例
Mar 06 Javascript
jQuery实现的简单拖拽功能示例
Sep 13 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
Nov 07 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 Javascript
JavaScript基础之AJAX简单的小demo
Jan 29 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
jQuery实现的分页插件完整示例
May 26 jQuery
Element-UI Table组件上添加列拖拽效果实现方法
Apr 14 #Javascript
React中的render何时执行过程
Apr 13 #Javascript
全站最详细的Vuex教程
Apr 13 #Javascript
vue的常用组件操作方法应用分析
Apr 13 #Javascript
简单的vuex 的使用案例笔记
Apr 13 #Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 #Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
Apr 13 #Javascript
You might like
php 404错误页面实现代码
2009/06/22 PHP
nodejs之请求路由概述
2014/07/05 NodeJs
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
python生成器的使用方法
2013/11/21 Python
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
django基础学习之send_mail功能
2019/08/07 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
python算的上脚本语言吗
2020/06/22 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
Python学习之time模块的基本使用
2021/01/17 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
父亲生日宴会答谢词
2014/01/10 职场文书
法学专业自我鉴定
2014/02/05 职场文书
农业开发项目建议书
2014/05/16 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
python turtle绘图命令及案例
2021/11/23 Python
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android