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 学习笔记 传智博客佟老师附详细注释
Sep 12 Javascript
jquery select下拉框操作的一些说明
Apr 02 Javascript
jquery遍历checkbox介绍
Feb 21 Javascript
轻松掌握JavaScript单例模式
Aug 25 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
Dec 12 Javascript
livereload工具实现前端可视化开发【推荐】
Dec 23 Javascript
layui.js实现的表单验证功能示例
Nov 15 Javascript
Vue侧滑菜单组件——DrawerLayout
Dec 18 Javascript
JS实现在文本指定位置插入内容的简单示例
Dec 22 Javascript
JavaScript模板引擎原理与用法详解
Dec 24 Javascript
微信小程序 setData 对 data数据影响问题
Apr 18 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 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中模拟POST传递数据的两种方法分享
2011/09/16 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
Joomla开启SEF的方法
2016/05/04 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
Prototype的Class.create函数解析
2011/09/22 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
车间主任岗位职责
2014/03/16 职场文书
驾驶员培训方案
2014/05/01 职场文书
集体生日活动方案
2014/08/18 职场文书
计划生育工作汇报
2014/10/28 职场文书
艺术节开幕词
2015/01/28 职场文书
戒赌保证书
2015/05/11 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS