JS实现复制内容到剪切板,兼容PC和手机端,支持SAFARI浏览器
转自:http://www.cnblogs.com/dreambin/p/9046999.html
Javascript原生有一些事件:copy、paste、cut,
这些事件可以作用的目标元素:
能获得焦点的元素 (如contentEditable
内容能编辑或者可以选中的元素),或者是<body>
<div id="cardList"><div class="btn">点击我,复制我</div> </div><script type="text/javascript">function copy(str){var save = function (e){e.clipboardData.setData('text/plain',str);//下面会说到clipboardData对象 e.preventDefault();//阻止默认行为 }document.addEventListener('copy',save);document.execCommand("copy");//使文档处于可编辑状态,否则无效 }document.getElementById('cardList').addEventListener('click',function(ev){copy(ev.target.innerText)})</script>
使用jQuery中的方法监听用户的剪切、复制、粘贴的行为:
$("#cut").on("cut",function(){alert("剪切"); }); $("#copy").on("copy",function(){alert("复制"); }); $("#paste").on("paste",function(){alert("粘贴"); });
这些行为包括使用键盘的ctrl + c操作,或者右击鼠标—>复制等操作。
Evevt.clipboardData 对象
clipboardData是JavaScript剪切板对象,该对象提供了3个常用方法:
clearData(): clipboardData对象从剪切板删除一种或多种数据格式(一个参数:数据类型)
getData(): clipboardData对象从剪切板获取指定格式的数据(一个参数:数据类型)
setData(): clipboardData对象赋予指定格式的数据(两个参数:数据类型,要赋予的值)
*数据类型一般为“"text/plain
" ”
Evevt.clipboardData 对象兼容性问题
经过尝试,clipboardData对象内兼容大部分px浏览器,像chrome,firefox、ie等,但是在手机端兼容性不是很好,
目前clipboardData在ios上的safari浏览器无效,为解决移动端这个问题,我们引用一个js插件——clipboard.js
clipboard.js依赖于HTML5推出的Selection API和execCommand API
使用方法:
首先在页面中引入
<script src="clipboard.min.js"></script>
使用clipboard.js的自定义属性
<!--使用data-clipboard-target属性指定被复制的标签--> <!--使用data-clipboard-action属性指定一些操作,copy(复制),cut(剪切)--> <!--注意:cut 操作仅适用于<textarea>和<input>--> <div style="margin:2em"><textarea id="id_text"></textarea><button type="button" id="id_copy"data-clipboard-target="#id_text"data-clipboard-action="copy">点击复制</button> </div> <script type="text/javascript">var clipboard = new Clipboard("#id_copy");clipboard.on("success",function (element) {//复制成功的回调 console.info("复制成功,复制内容: " + element.text);});clipboard.on("error",function (element) {//复制失败的回调 console.info(element);}); </script>
高级用法:
//清理Clipboard对象 var clipboard = new Clipboard('.btn'); clipboard.destroy();
JS实现各种复制到剪贴板:
1、实现点击按钮,复制文本框中的的内容
<script type="text/javascript"> function copyyel2() { var yel2=document.getElementById("biao1"); yel2.select(); // 选择对象 document.execCommand("Copy"); // 执行浏览器复制命令 alert("已复制好,可贴粘。"); } </script> <textarea cols="20" rows="10" id="biao1">用户定义的代码区域</textarea> <input type="button" onClick="copyyel2()" value="点击复制代码" />
2、复制专题地址和 url 地址,传给 QQ/MSN 上的好友
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Js复制代码</title> </head> <body> <p> <input type="button" name="anniu1" onClick='copyToClipBoard()' value="复制专题地址和url地址,传给QQ/MSN上的好友"> <script language="javascript"> function copyToClipBoard(){ var clipBoardContent=""; clipBoardContent+=document.title; clipBoardContent+=""; clipBoardContent+=this.location.href; window.clipboardData.setData("Text",clipBoardContent); alert("复制成功,请粘贴到你的QQ/MSN上推荐给你的好友"); } </script>
3、直接复制 url
<input type="button" name="anniu2" onClick='copyUrl()' value="复制URL地址"> <script language="javascript"> function copyUrl() { var clipBoardContent=this.location.href; window.clipboardData.setData("Text",clipBoardContent); alert("复制成功!"); } </script>
4、点击文本框时,复制文本框里面的内容
<input onclick="oCopy(this)" value="你好.要copy的内容!"> <script language="javascript"> function oCopy(obj){ obj.select(); js=obj.createTextRange(); js.execCommand("Copy") alert("复制成功!"); } </script>
5、复制文本框或者隐藏域中的内容
<script language="javascript"> function CopyUrl(target){ target.value=myimg.value; target.select(); js=myimg.createTextRange(); js.execCommand("Copy"); alert("复制成功!"); } function AddImg(target){ target.value="[IMG]"+myimg.value+"[/ img]"; target.select(); js=target.createTextRange(); js.execCommand("Copy"); alert("复制成功!"); } </script>
6.复制 span 标记中的内容
<script type="text/javascript"> </script> <br /> <br /> <script type="text/javascript">function copyText(obj) { var rng = document.body.createTextRange(); rng.moveToElementText(obj); rng.scrollIntoView(); rng.select(); rng.execCommand("Copy"); rng.collapse(false); alert("复制成功!"); } </script>
7.浏览器兼容 copyToClipboard("拷贝内容")
function copyToClipboard(txt) {if (window.clipboardData) {window.clipboardData.clearData();clipboardData.setData("Text", txt);alert("复制成功!");} else if (navigator.userAgent.indexOf("Opera") != -1) {window.location = txt;} else if (window.netscape) {try {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");} catch (e) {alert("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将 'signed.applets.codebase_principal_support'设置为'true'");}var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);if (!clip)return;var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);if (!trans)return;trans.addDataFlavor("text/unicode");var str = new Object();var len = new Object();var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);var copytext = txt;str.data = copytext;trans.setTransferData("text/unicode", str, copytext.length * 2);var clipid = Components.interfaces.nsIClipboard;if (!clip)return false;clip.setData(trans, null, clipid.kGlobalClipboard);alert("复制成功!");}}
8.兼容各大浏览器的复制代码(结合ZeroClipboard.js)
<html> <head> <title>Zero Clipboard Test</title> <script type="text/javascript" src="ZeroClipboard.js"></script> <script language="JavaScript">var clip = null;function $(id) { return document.getElementById(id); }function init() {clip = new ZeroClipboard.Client();clip.setHandCursor(true); clip.addEventListener('mouseOver', function (client) {// update the text on mouse over clip.setText( $('fe_text').value );});clip.addEventListener('complete', function (client, text) {//debugstr("Copied text to clipboard: " + text ); alert("该地址已经复制,你可以使用Ctrl+V 粘贴。");});clip.glue('clip_button', 'clip_container' );} </script> </head> <body onLoad="init()"> <input id="fe_text" cols=50 rows=5 value=复制内容文本1 > <span id="clip_container"><span id="clip_button"><b>复制</b></span></span> </body> </html
JS实现复制内容到剪切板,兼容PC和手机端,支持SAFARI浏览器相关推荐
- js禁止右键,禁止复制,复制内容到剪切板
有时候我们希望自己的网页源码不被查看,这时需要关掉鼠标的右击事件;有时候我们也希望禁止选择页面内容Ctrl+C复制. 1.禁止右键查看源码; <script> //设置右键事件 funct ...
- html5 复制到剪贴板 兼容,JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...
- html 文本标签点击复制,点击复制-点击div或者p标签复制内容到剪切板
点击复制-点击div或者p标签复制内容到剪切板 最近在做一个需求,就是需要点击div或者p标签需要复制其中的内容到剪切板中,可以快速的粘贴 如图下所示: 1059788-201709041517163 ...
- android 复制内容到剪切板方法
/*** 复制内容到剪切板** @param copyStr* @return*/ private boolean copyStr(String copyStr) {try {//获取剪贴板管理器Cl ...
- Android复制内容到剪切板上
Android复制内容到剪切板上 fun Context.copyToClipboard(label: String, data: String) {getSystemService<Clipb ...
- html5图片剪切板,原生js实现基于base64数据复制图片到剪切板,可以粘贴出图片,模拟浏览器复制功能。...
原生js实现基于base64数据复制图片到剪切板,可以粘贴出图片,模拟浏览器复制功能.前言: 初次发帖排版略丑,见谅.之前我们这边有个需求就是说,前端通过canvas截图然后, 点击一个按钮实现复制截 ...
- JavaScript复制内容到剪切板
复制内容到剪切板分两种情况,一种是从页面已有的可选元素中选中内容进行复制,一种是将Javascript代码中的字符串直接复制到剪切板. 复制页面元素选中内容 html代码: <input typ ...
- js调用浏览器的复制功能复制内容到剪切板
js调用浏览器的复制功能: 浏览器自带复制粘贴功能,通过js调用浏览器的复制功能实现复制文本内容到剪切板 浏览器复制命令:document.execCommand('Copy') 具体代码实现: // ...
- h5页面调用用户手机打电话功能以及复制内容到剪切板
通过配合vant的面板组件实现该功能: 在index.html中添加meta标签:<meta name="format-detection" content="te ...
- 一键复制android代码,兼容安卓和ios实现一键复制内容到剪切板
js兼容安卓和ios实现粘贴板一键复制 color: #000; background: #fff; overflow-y: scroll;-webkit-text-size-adjust: 100% ...
最新文章
- windows下 Source Monitor代码度量工具的使用
- php 编译mcrypt,centos 6下编译安装php时安装mcrypt支持库
- 安装zabbix4.0+grafana
- 【五】搜索推荐技术在电商导购领域的应用——截图小王子
- 音视频技术开发周刊(第126期)
- leetcode 572. 另一个树的子树(Java版)
- selenium和python的关系,Selenium+python
- python定时启动代码_python每天定时运行某程序代码
- 调试裕泰微yt8521s的phy芯片流程记录
- HTML5基础网页设计(加代码CSS)
- 组件上传之AspUpload使用方法
- 小米air耳机重新配对_小米air耳机重新配对_「小三爷出品」不错的新年礼物,小米蓝牙耳机Air体验...
- Java中除法运算符简介说明
- Mac Book文件夹加密
- 闭着眼学基础python 保姆教程:组合数据类型(2)映射与集合类型
- Python 蓝凌OA任意文件读取批量扫描 poc编写
- SGE(集群任务管理系统)常用操作命令
- 基于Java毕业设计研究生招生信息管理源码+系统+mysql+lw文档+部署软件
- unity+高通vuforia开发增强现实(AR)教程(二)
- 毕业了,我是先择业,还是先就业
热门文章
- Android应用分类
- 决策树分析例题经典案例_决策树分类的实例
- Maccms8.x 命令执行漏洞分析
- 【HTML+CSS+JS】模仿QQ登录界面
- 任正非的小女儿,出道了!以后会代言华为手机吗?
- oracle11g监听配置访问QA
- ETCD数据库源码分析——etcdserver bootstrap初始化存储
- 肿瘤 材料 计算机模拟,PeerJ: 计算机模拟揭示癌症多样性
- 无法加载 MySQL ODBC 5.3 Unicode Driver ODBC 驱动程序的安装例程,因为存在错误代码126.
- android 代码设置 键盘适应_实现Android键盘的中英文适配