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判断textarea值是否为空并给出相应提示
Sep 04 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
创建自己的jquery表格插件
Nov 25 Javascript
jQuery实现的多滑动门,多选项卡效果代码
Mar 28 Javascript
Javascript HTML5 Canvas实现的一个画板
Apr 12 Javascript
简单理解Vue条件渲染
Dec 03 Javascript
JS实现可针对算术表达式求值的计算器功能示例
Sep 04 Javascript
总结javascript三元运算符知识点
Sep 28 Javascript
JavaScript修改注册表实例代码
Jan 05 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
vue select 获取value和lable操作
Aug 28 Javascript
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
2007/04/20 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
django基于restframework的CBV封装详解
2019/08/08 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
通过自学python能找到工作吗
2020/06/21 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
室内设计自我鉴定
2013/10/15 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
信息总监管理职责范本
2014/03/08 职场文书
装修施工安全责任书
2014/07/24 职场文书
租房协议书
2014/09/12 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android