找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 3314|回复: 0

[JS] js实现点击按钮复制文本功能

[复制链接]
魔戒之主
法师

2051

主题

2415

回帖

2472

广播

技术小组

积分
17558
泰拉
6032
水晶
14820
铜钥匙
1157
银钥匙
0
金钥匙
0

【江湖新秀】【基友证明】【水贴恶魔】【高朋满座】【论坛蘑菇党】【我是小土豪】【宝剑回鞘】【伪娘证书】【超级玛丽】【泰拉达人】【文艺青年证】【社区最高荣誉勋章】【奥运选手】【我很囧证】【宠物·缘定三生】【发帖机器】【潜水高手】【我很萌证】【动漫迷】【有头有脸】【视频爱好者】【萝莉控】【香水有毒】【朋友控】【我素软妹纸】【我是巫婆】【我是公主】【我很聪明证】【新官上任三把火】

QQ
发表于 2021-3-16 11:37:37 | 显示全部楼层 |阅读模式
最近遇到一个需求,需要点击按钮,复制 <p> 标签中的文本到剪切板

之前做过复制输入框的内容,原以为差不多,结果发现根本行不通

尝试了各种办法,最后使了个障眼法,实现了下面的效果

2018041415435927.gif

一、原理分析

浏览器提供了 copy 命令 ,可以复制选中的内容

  1. document.execCommand("copy")
复制代码


如果是输入框,可以通过 select() 方法,选中输入框的文本,然后调用  copy 命令,将文本复制到剪切板

但是 select() 方法只对 <input> 和 <textarea> 有效,对于 <p> 就不好使

最后我的解决方案是,在页面中添加一个 <textarea>,然后把它隐藏掉

点击按钮的时候,先把 <textarea> 的 value 改为 <p> 的 innerText,然后复制 <textarea> 中的内容


二、代码实现

HTML 部分

  1. <style type="text/css">
  2. .wrapper {position: relative;}
  3. #input {position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;}
  4. </style>

  5. <div class="wrapper">
  6. <p id="text">我把你当兄弟你却想着复制我?</p>
  7. <textarea id="input">这是幕后黑手</textarea>
  8. <button onclick="copyText()">copy</button>
  9. </div>
复制代码


JS 部分

  1. <script type="text/javascript">
  2. function copyText() {
  3.   var text = document.getElementById("text").innerText;
  4.   var input = document.getElementById("input");
  5.   input.value = text; // 修改文本框的内容
  6.   input.select(); // 选中文本
  7.   document.execCommand("copy"); // 执行浏览器复制命令
  8.   alert("复制成功");
  9. }
  10. </script>
复制代码
[发帖际遇]: 墨裔 乐于助人,奖励 12 泰拉. 幸运榜 / 衰神榜
每天签到都被打劫

泰拉宝石
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-11-21 20:22 , Processed in 0.105376 second(s), 41 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表