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带箭头提示框tooltips插件集锦
Nov 17 Javascript
node.js中的fs.chown方法使用说明
Dec 16 Javascript
javascript 实现 原路返回
Jan 21 Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 Javascript
node.js实现端口转发
Apr 14 Javascript
Ajax实现不刷新取最新商品
Mar 01 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 Javascript
一个可复用的vue分页组件
May 15 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
用npm-run实现自动化任务的方法示例
Jan 14 Javascript
Vue使用Element实现增删改查+打包的步骤
Nov 25 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
开启PHP的伪静态模式
2015/12/31 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
Python实现partial改变方法默认参数
2014/08/18 Python
Python中字符编码简介、方法及使用建议
2015/01/08 Python
Python创建模块及模块导入的方法
2015/05/27 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
10个Python小技巧你值得拥有
2018/09/29 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Keras 使用 Lambda层详解
2020/06/10 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
学历公证书范本
2014/04/09 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
银行服务理念口号
2015/12/25 职场文书
交通安全教育心得体会
2016/01/15 职场文书
redis数据结构之压缩列表
2022/03/21 Redis
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
数据设计之权限的实现
2022/08/05 MySQL