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基础第一章 JavaScript与用户端
Jul 22 Javascript
用javascript作一个通用向导说明
Aug 30 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
Nov 12 Javascript
jquery验证手机号是否正确实例讲解
Nov 17 Javascript
轻松实现JavaScript图片切换
Jan 12 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
Aug 25 Javascript
详解JavaScript树结构
Jan 09 Javascript
微信小程序开发(一) 微信登录流程详解
Jan 11 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
angularjs中判断ng-repeat是否迭代完的实例
Sep 12 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
Nuxt.js nuxt-link与router-link的区别说明
Nov 06 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+mysql保存和输出文件
2006/10/09 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
python快速排序代码实例
2013/11/21 Python
Python实现全角半角转换的方法
2014/08/18 Python
使用Python的PEAK来适配协议的教程
2015/04/14 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
开办加工厂创业计划书
2014/01/03 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
企业宗旨标语
2014/06/10 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
详解Python描述符的工作原理
2021/06/11 Python
Python Django项目和应用的创建详解
2021/11/27 Python
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
SQL Server删除表中的重复数据
2022/05/25 SQL Server