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 相关文章推荐
JS 自动安装exe程序
Nov 30 Javascript
Jquery 实现Tab效果 思路是js思路
Mar 02 Javascript
IE6已终止操作问题的2种情况及解决
Apr 23 Javascript
jQuery表格排序组件-tablesorter使用示例
May 26 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
浅析JS动态创建元素【两种方法】
Apr 20 Javascript
JavaScript实现实时更新系统时间的实例代码
Apr 04 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
vue路由守卫,限制前端页面访问权限的例子
Nov 11 Javascript
JS通用方法触发点击事件代码实例
Feb 17 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 Javascript
js编写简易的计算器
Jul 29 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
php设计模式 State (状态模式)
2011/06/26 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
php函数与传递参数实例分析
2014/11/15 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
如何开发安全的AJAX应用
2014/03/26 面试题
中专生职业生涯规划书范文
2013/12/29 职场文书
贷款承诺书
2015/01/20 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
2015年妇女工作总结
2015/05/14 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
初中班干部工作总结
2015/08/10 职场文书
爱国教育主题班会
2015/08/14 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python