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 相关文章推荐
Javascript学习笔记5 类和对象
Jan 11 Javascript
jquery 插件学习(三)
Aug 06 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
javascript处理表单示例(javascript提交表单)
Apr 28 Javascript
JS选项卡动态替换banner图片路径的方法
May 11 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
JS简单实现城市二级联动选择插件的方法
Aug 19 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
如何编写jquery插件
Mar 29 jQuery
vue里面使用mui的弹出日期选择插件实例
Sep 16 Javascript
javascript利用canvas实现鼠标拖拽功能
Jul 23 Javascript
Vue2.0 ES6语法降级ES5的操作
Oct 30 Javascript
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正则表达式使用的详细介绍
2013/04/27 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
jquery构造器的实现代码小结
2011/05/16 Javascript
javascript读写json示例
2014/04/11 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python 文件操作的详解及实例
2017/09/18 Python
python实现dijkstra最短路由算法
2019/01/17 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
python中altair可视化库实例用法
2021/01/26 Python
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
房屋继承公证书
2014/04/10 职场文书
供货协议书范本
2014/04/22 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
单位委托书
2014/10/15 职场文书
十佳少年事迹材料
2014/12/25 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS