JS复制对应id的内容到粘贴板(Ctrl+C效果)


Posted in Javascript onJanuary 23, 2017

前言

最近在做一个按钮,实现的效果是当点击后复制url到黏贴板,但不是当前页面url,而是对应一个元素的url,且一个页面会有多个url。一开始找到一个方法,但是竟然只兼容IE浏览器,神奇了,竟然有只兼容IE的东西。后来发现一个zeroclipboard.js这个插件,但是怎么也搞不出那个效果,有点麻烦。

最后翻到了一个js封装好的方法,有效!

想要实现的一个效果是,下面html代码:

<tr>
 <td>
 <a id="copy_{$key}" onclick="getUrl('{$key}')">复制文件链接</a>
 <input id="file_{$key}" value="{$file.file_url}" style="margin-left: -9999px"/>
 </td>
</tr>

点击复制文件链接这个按钮,复制input框里的value值,是传进去的一个url;首先点击a标签会触发getUrl这个函数;传进去id用于找到对应的input然后取值(因为遍历了多个td,有许多个input框一一对应去取)。

下面js代码:

<pre><script type="application/javascript">
 
 function getUrl(id) {
  if (copyToClipboard(document.getElementById("file_"+id))){
   alert("成功复制到黏贴板!");
  }else{
   alert("复制到黏贴板失败!");
  }
 }
 
 function copyToClipboard(elem) {
  // create hidden text element, if it doesn't already exist
  var targetId = "_hiddenCopyText_";
  var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA";
  var origSelectionStart, origSelectionEnd;
  if (isInput) {
   // can just use the original source element for the selection and copy
   target = elem;
   origSelectionStart = elem.selectionStart;
   origSelectionEnd = elem.selectionEnd;
  } else {
   // must use a temporary form element for the selection and copy
   target = document.getElementById(targetId);
   if (!target) {
    var target = document.createElement("textarea");
    target.style.position = "absolute";
    target.style.left = "-9999px";
    target.style.top = "0";
    target.id = targetId;
    document.body.appendChild(target);
   }
   target.textContent = elem.textContent;
  }
  // select the content
  var currentFocus = document.activeElement;
  target.focus();
  target.setSelectionRange(0, target.value.length);
 
  // copy the selection
  var succeed;
  try {
   succeed = document.execCommand("copy");
  } catch(e) {
   succeed = false;
  }
  // restore original focus
  if (currentFocus && typeof currentFocus.focus === "function") {
   currentFocus.focus();
  }
 
  if (isInput) {
   // restore prior selection
   elem.setSelectionRange(origSelectionStart, origSelectionEnd);
  } else {
   // clear temporary content
   target.textContent = "";
  }
  return succeed;
 }
</script></pre>

getUrl中调用了封装好的copyToClipboard方法实现了功能。有一点的是html中input的样式用style="margin-left: -9999px"进行隐藏,因为不知道为什么用type="hiden"或者display="none"去隐藏都只会获取源代码而不是动态的url遍历出来的值。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
Mar 01 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
jquery的live使用注意事项
Feb 18 Javascript
javascript实现点击提交按钮后显示loading的方法
Jul 03 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
Bootstrap每天必学之表单
Nov 23 Javascript
js倒计时抢购实例
Dec 20 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
Feb 21 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 Javascript
Sea.JS知识总结
May 05 Javascript
javascript for循环性能测试示例
Aug 07 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
Jan 23 #Javascript
Node.js Express 框架 POST方法详解
Jan 23 #Javascript
js 颜色选择插件
Jan 23 #Javascript
JavaScript常用正则函数用法示例
Jan 23 #Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 #Javascript
微信小程序侧边栏滑动特效(左右滑动)
Jan 23 #Javascript
微信小程序技巧之show内容展示,上传文件编码问题
Jan 23 #Javascript
You might like
东方红 - 来复式再生机的修复
2021/03/02 无线电
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
Pandas中resample方法详解
2019/07/02 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
给护士表扬信
2014/01/19 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
消防宣传口号
2014/06/16 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
世界环境日活动总结
2015/02/11 职场文书
MySQL创建管理LIST分区
2022/04/13 MySQL