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 相关文章推荐
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
Javascript学习笔记7 原型链的原理
Jan 11 Javascript
jquery 学习之二 属性相关
Nov 23 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
Jan 21 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
js实现三张图(文)片一起切换的banner焦点图
Aug 25 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
判断数组是否包含某个元素的js函数实现方法
May 19 Javascript
jQuery实现发送验证码并60秒倒计时功能
Nov 25 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
基于vue-video-player自定义播放器的方法
Mar 21 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笔记之常用文件操作
2010/10/12 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
javascript Object与Function使用
2010/01/11 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
windows下python和pip安装教程
2018/05/25 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
写给老婆的检讨书
2014/02/21 职场文书
促销活动方案模板
2014/02/24 职场文书
保密普查工作实施方案
2014/02/25 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书