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 学习笔记(一)
Oct 13 Javascript
js处理json以及字符串的比较等常用操作
Sep 08 Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
jquery自适应布局的简单实例
May 28 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
js正则表达式验证表单【完整版】
Mar 06 Javascript
React学习之事件绑定的几种方法对比
Sep 24 Javascript
JS同步、异步、延迟加载的方法
May 05 Javascript
vue 移动端注入骨架屏的配置方法
Jun 25 Javascript
微信小程序自定义导航栏(模板化)
Nov 15 Javascript
jQuery实现小火箭返回顶部特效
Feb 03 jQuery
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
无线电广播的开始
2002/01/30 无线电
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
心扬JS分页函数代码
2010/09/10 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
js实现div色块碰撞
2020/01/16 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
javascript实现评分功能
2020/06/24 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
python实现图片插入文字
2019/11/26 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
临床医师专业个人自我评价范文
2013/11/07 职场文书
委托书样本
2014/04/02 职场文书
面试必备的求职信
2014/05/25 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
Golang中channel的原理解读(推荐)
2021/10/16 Golang
用Python实现屏幕截图详解
2022/01/22 Python