27个答案
概述
异步剪贴板API [navigator.crapboard.writeText] 中提供以文本为中心的部分 Chrome 66(2018年3月) 访问是异步的,使用 JavaScript承诺 ,这样安全用户提示(如果显示)就不会中断页面中的JavaScript。 文本可以直接从变量复制到剪贴板。 仅支持通过HTTPS提供的页面。 在Chrome 66页面中,非活动选项卡可以写入剪贴板,而无需权限提示。
document.execCommand(“复制”) ( 已弃用 ) 👎 截至2015年4月,大多数浏览器都支持此功能(请参阅下面的浏览器支持)。 访问是同步的,即停止页面中的JavaScript直到完成,包括显示和用户与任何安全提示交互。 从DOM中读取文本并将其放置在剪贴板上。 在2015年4月的测试期间,只有Internet Explorer在向剪贴板写入时显示权限提示。
覆盖复制事件 请参阅上的剪贴板API文档 覆盖复制事件 . 允许您从任何复制事件中修改剪贴板上显示的内容,可以包括纯文本以外的其他数据格式。 此处未涵盖,因为它无法直接回答问题。
一般开发说明
重要信息 (此处注明2020年2月20日)
异步+回退
函数回退CopyTextToClipboard(文本){ var textArea=document.createElement(“textArea”); textArea.value=文本; //避免滚动到底部 textArea.style.top=“0”; textArea.style.left=“0”; textArea.style.position=“固定”; document.body.appendChild(textArea); textArea.focus(); textArea.select(); 尝试{ var成功=document.execCommand('copy'); var msg=成功?' 成功':'不成功'; console.log('Fallback:复制文本命令是'+msg); }捕获(错误){ console.error(“回退:Oops,无法复制”,err); } document.body.removeChild(textArea); } 函数copyTextToClipboard(文本){ if(!navigator.clipboard){ 回退将文本复制到剪贴板(文本); 回报; } navigator.clipboap.writeText(text).then(function()){ console.log('Sync:复制到剪贴板成功!'); },函数(err){ console.error('Async:无法复制文本:',err); }); } var copyBobBtn=document.querySelector('.js copy bob btn'), copyJaneBtn=document.querySelector('.js-copy-janebtn'); copyBobBtn.addEventListener('单击',函数(事件){ 将文本复制到剪贴板('Bob'); }); copyJaneBtn.addEventListener('click',函数(事件){ 将文本复制到剪贴板(“Jane”); });
<div style=“display:inline-block;vertical-align:top;”> 将剪贴板设置为bob 将剪贴板设置为jane </div> <div style=“display:inline-block;”> <textarea class=“js-test-textarea”cols=“35”rows=“4”>尝试粘贴到此处以查看剪贴板上的内容: </text区域> </div>
异步剪贴板API
var text=“显示在剪贴板上的示例文本”; navigator.clipboap.writeText(text).then(function()){ console.log('Sync:复制到剪贴板成功!'); },函数(err){ console.error('Async:无法复制文本:',err); });
document.execCommand(“复制”)
浏览器支持
Internet Explorer 10+(尽管 这个文档 表示Internet Explorer 5.5+提供了一些支持)。 谷歌Chrome 43+(至2015年4月) Mozilla Firefox 41+(2015年9月发货) Opera 29+(基于2015年4月的Chromium 42)
简单示例
var copyTextareaBtn=document.querySelector('.js-textareacopybtn'); copyTextareaBtn.addEventListener('click',函数(事件){ var copyTextarea=文档.querySelector('.js-copyTextarea'); copyTextarea.focus(); copyTextarea.select(); 尝试{ var successful=document.execCommand(“副本”); var msg=成功?' 成功':'不成功'; console.log('复制文本命令为'+msg); }捕获(错误){ console.log('Oops,无法复制'); } });
<p> 复制文本区域 你好,我是一些文本 </p>
复杂示例:复制到剪贴板而不显示输入
函数copyTextToClipboard(文本){ var textArea=document.createElement(“textArea”); // //***此造型是一个额外的步骤,可能不需要*** // //它为什么在这里? 确保: // 1. 元素可以有焦点和选择。 // 2. 如果元素要进行flash渲染,那么它的视觉影响最小。 // 3. 减少选择和复制的片面性,如果 //textarea元素不可见。 // //可能元素甚至不会渲染,甚至不会 //闪光,所以其中一些只是预防措施。 然而,在 //Internet Explorer弹出窗口时,元素可见 //询问用户对该网页的权限的框 //复制到剪贴板。 // //无论滚动位置如何,都应放在屏幕的左上角。 textArea.style.position=“固定”; textArea.style.top=0; textArea.style.left=0; //确保其宽度和高度较小。 设置为1px/1em //不起作用,因为在某些浏览器上这会产生负w/h。 textArea.style.width='2em'; text面积.style.height='2em'; //我们不需要填充,如果需要flash渲染,则可以减小大小。 textArea.style.padding=0; //清理所有边界。 textArea.style.border=“无”; textArea.style.outline=“无”; textArea.style.box阴影=“无”; //如果出于任何原因渲染,请避免白色框闪烁。 textArea.style.background=“透明”; textArea.value=文本; document.body.appendChild(textArea); textArea.focus(); textArea.select(); 尝试{ var成功=document.execCommand('copy'); var msg=成功?' 成功':'不成功'; console.log('复制文本命令为'+msg); }捕获(错误){ console.log('Oops,无法复制'); } document.body.removeChild(textArea); } var copyBobBtn=document.querySelector('.js-copy-bob-btn'), copyJaneBtn=document.querySelector('.js-copy-janebtn'); copyBobBtn.addEventListener('单击',函数(事件){ 将文本复制到剪贴板('Bob'); }); copyJaneBtn.addEventListener('单击',函数(事件){ 将文本复制到剪贴板(“Jane”); });
<div style=“display:inline-block;vertical-align:top;”> 将剪贴板设置为bob 将剪贴板设置为jane </div> <div style=“display:inline-block;”> <textarea class=“js-test-textarea”cols=“35”rows=“4”>尝试粘贴到此处以查看剪贴板上的内容: </text区域> </div>
其他注释
仅当用户采取操作时才有效
剪贴板API
是否支持?
支持的document.queryCommands(“复制”) 应该返回 真的 如果命令“浏览器支持”。 和 document.queryCommandEnabled(“复制”) 返回 真的 如果 document.execCommand(“复制”) 如果现在调用,将成功。 检查以确保命令是从用户启动的线程调用的,并且满足其他要求。
浏览器兼容性详细信息
-
5 -
1 关于样式的注释:我只使用 不透明度:0 隐藏 <文本区域> 。此外 z索引:-1 如果你想感到完全安全。 因此,我们实际上只需要定义三个样式属性: 位置:固定 以及前面提到的两个。 – 1234卢比 评论 2021年9月8日5:06 -
2 我刚刚添加了回退后焦点的重置: var previousFocusElement=document.activeElement(……所有后备代码……)previous FocusElement.focus(); – 马提亚斯 评论 2021年10月20日12:42 -
1 这是一个很好的、彻底的答案-简而言之,使用标题下这个答案中描述的方法 异步+回退 -这实际上是Stackoverflow本身使用的! 请参阅此答案以供参考 . – 杰伯德 评论 2022年1月20日15:29 -
三
函数copyToClipboard(文本){ window.frompt(“复制到剪贴板:Ctrl+C,Enter”,文本); }
<button id=“demo”onclick=“copyToClipboard(document.getElementById('demo').innerHTML)”>这就是我想要复制的内容 <脚本> 函数copyToClipboard(文本){ window.prompt(“复制到剪贴板:Ctrl+C,Enter”,text); } </script>
-
26 -
107 -
66 -
26 -
9
创建一个文本区域,并将其内容设置为要复制到剪贴板的文本。 将文本区域附加到DOM。 选择文本区域中的文本。 调用document.execCommand(“复制”) 从dom中删除文本区域。
出于安全原因,这只能从事件处理程序(如单击)调用(就像打开窗口一样)。 Internet Explorer将在第一次更新剪贴板时显示权限对话框。 Internet Explorer和Edge将在文本区域聚焦时滚动。 在某些情况下,execCommand()可能引发。 除非使用文本区域,否则换行符和制表符可能会被吞咽。 (大多数文章似乎都建议使用div) 显示Internet Explorer对话框时,文本区域将可见,您需要将其隐藏,或使用Internet Explorer特定的剪贴板数据API。 在Internet Explorer中,系统管理员可以禁用剪贴板API。
//将字符串复制到剪贴板。 必须从中调用 //事件处理程序,如click。 如果失败,可能会返回false,但 //这并不总是可能的。 浏览器支持Chrome 43+, //Firefox 42+、Safari 10+、Edge和Internet Explorer 10+。 //Internet Explorer:剪贴板功能可能被禁用 //管理员。 默认情况下,第一个显示提示 //使用剪贴板的时间(每个会话)。 函数copyToClipboard(文本){ if(window.clipboardData&&window.cipboardData.setData){ //Internet Explorer特定的代码路径,用于防止在对话框可见时显示文本区域。 return window.clipboardData.setData(“文本”,Text); } else if(document.queryCommandSupported&&document.geryCommandSupported&“复制”){ var textarea=document.createElement(“textarea”); textarea.textContent=文本; textarea.style.position=“固定”;// 防止在Microsoft Edge中滚动到页面底部。 document.body.appendChild(文本区域); textarea.select(); 尝试{ return document.execCommand(“副本”);// 某些浏览器可能会引发安全异常。 } 捕获(ex){ console.warn(“复制到剪贴板失败。”,例如); return提示符(“复制到剪贴板:Ctrl+C,Enter”,text); } 最后{ document.body.removeChild(文本区域); } } }
-
18 不错的答案:跨浏览器支持,错误处理+清理。 截至今天对queryCommandSupported的新支持,在Javascript中复制到剪贴板现在是可行的,这应该是公认的答案,而不是笨拙的“window.prompt(“复制到剪贴板:Ctrl+C,Enter”,text)”解决方法。 IE9支持window.clipboardData,所以您应该在浏览器支持列表中添加IE9,我想可能还有IE8和以前的版本,但需要验证。 – 用户627283 评论 2015年12月1日17:38 -
8 -
三 @Noitidart I经过测试,它非常适用于firefox 54、chrome 60和边缘浏览器,即使焦点不在html文档中,您遇到的错误也可能是FF 55版本特有的 – 托辛·约翰 评论 2017年8月12日1:01 -
2 -
三 jQuery UI用户 :请注意,如果尝试在模式对话框中使用此函数,则此方法会遇到问题。 我怀疑这是因为jQuery UI模式正在管理/操作文档焦点。 如果它适合您的用例,一个解决方法是先关闭模式对话框,然后复制文本。 或者,只需使用非模态对话框。 我怀疑您可能还可以修改此函数,以便它将文本区域添加到模态中,而不是添加到正文中。 – 里诺戈 评论 2018年12月31日20:30
功能副本(文本){ var输入=document.createElement('input'); input.setAttribute('value',text); document.body.appendChild(输入); input.select(); var result=document.execCommand('copy'); document.body.removeChild(输入); 返回结果; }
功能副本(文本){ var输入=document.createElement('textarea'); input.inerHTML=文本; document.body.appendChild(输入); input.select(); var result=document.execCommand('copy'); document.body.removeChild(输入); 返回结果; }
<script type=“text/javascript”> 函数select_all(obj){ var text_val=评估(对象); text_val.focus(); text_val.select(); r=text_val.createTextRange(); if(!r.execCommand)return;// 特征检测 r.execCommand(“复制”); } </script> <输入值=“ 网址:http://www.sajithmr.com " onclick=“select_all(this)”name=“url”type=“text”/>
-
7 -
5 -
22 -
为什么当人们使用Flash修改剪贴板时,十年来从未提出过这些隐私问题? 如果我们只允许一种方式(即复制,而不阅读其内容),那怎么会产生隐私问题? 评论 2015年6月6日11:35 -
@穆罕默德宾·尤斯拉特:虽然不是隐私问题,但它 是 用户体验关注点。 假设用户复制了一些东西,并认为他知道剪贴板上有什么,然后浏览您的站点,突然剪贴板中包含了一些他没有要求的东西,并且他已经丢失了最初复制的内容。 – 敬畏 评论 2015年10月2日12:01
<对象 classid=“clsid:d27cdb6e-ae6d-11cf-96b8-444553540000” 宽度=“110” height=“14” id=“clippy”> <param name=“movie”value=“/flash/clippy.swf”/> <param name=“allowScriptAccess”value=“always”/> <param name=“quality”value=“high”/> <param name=“scale”value=“noscale”/> <param NAME=“FlashVars”value=“text=#{text}”/> <param name=“bgcolor”value=“#{bgcolor}”/> <嵌入 src=“/flash/clippy.swf” width=“110” height=“14” name=“clippy” 质量=“高” allowScriptAccess=“始终” type=“应用/x-shockwave-flash” 插件页面=“ http://www.macromedia.com/go/getflashplayer " FlashVars=“text=#{text}” bgcolor=“#{bgcolor}”/> </对象>
-
13
var isIe=(navigator.userAgent.toLowerCase().indexOf(“msie”)!=- 1 || navigator.userAgent.toLowerCase().indexOf(“三叉戟”)!=- 1); document.addEventListener(“副本”,函数(e){ var textToPutOnClipboard=“这是一些文本”; 如果(是){ window.clipboardData.setData(“文本”,textToPutOnClipboard); }其他{ e.clipboardData.setData('text/plain',textToPutOnClipboard); } e.预防违约(); });
window.clipboard数据
document.execCommand(“复制”);
-
三 博客文章中没有提到(我希望在不久的将来更新它),这是使用execCommand触发剪切和复制的功能。 IE10+、Chrome 43+和Opera29+支持此功能。 请在此处阅读。 updates.html5rocks.com/2015/04/cut-and-copy命令 – 理查德·舒尔茨 评论 2015年5月20日21:30 -
复制按钮 <脚本> document.getElementById('markup-copy').addEventListener('click',function(){ 剪贴板副本({ “text/plain”:“标记文本。 将我粘贴到富文本编辑器中。', 'text/html/':'<i>此处</i>是一些<b>富文本</b>' }).然后( function(){console.log('success');}, 函数(err){console.log('failure',err); }); }); </script>
注: 现在已弃用此选项。 迁移到 在这里 .
-
-
2
函数copyToClp(txt){ var m=文件; txt=m.createTextNode(txt); var w=窗口; var b=m.body; b.appendChild(文本); if(b.createTextRange){ var d=b.创建文本范围(); d.moveToElementText(txt); d.选择(); m.execCommand(“副本”); } 其他{ var d=m.创建范围(); var g=w.getSelection; d.选择节点内容(txt); g().removeAllRanges(); g().addRange(d); m.execCommand(“副本”); g().removeAllRanges(); } txt.remove(); }
异步复制某物(文本?){ 尝试{ const-toCopy=文本||location.href; 等待navigator.clipboader.writeText(toCopy); console.log(“复制的文本或页面URL”); } 捕获(错误){ console.error(“复制失败:”,err); } }
<button mat-menu-item(click)=“copySomething()”> <span>复制链接</span> </按钮>
navigator.clipboap.writeText(textExample);
-
1 -
2 -
1 根据MDN剪贴板文档( developer.mozilla.org/en-US/docs/Web/API/剪贴板 ),此功能仅在安全上下文(HTTPS)、某些或所有支持的浏览器中可用。 – 维斯米哈洛夫 评论 2022年10月28日8:28 -
-
@vesmihaylov根据MDN Clipboard文档,为了更清楚 剪贴板.writeText 命令在所有主流浏览器的最新版本中都受支持,但有一些限制(例如Safari要求在手势回调中使用它)。 – 多亨特 评论 7月1日4:21
单击复制 <script src=“ZeroClipboard.js”></script> <脚本> var clip=新的ZeroClipboard(document.getElementById('copy')); </script>
clip.on('noflash',函数(客户端,参数){ $(“#copy”).点击(function(){ var txt=$(this).attr('data-clipboard-text'); 提示(“复制链接,然后单击确定”,txt); }); });
-
27 -
1 -
11 -
2 有一个简单的版本 gist.github.com/JamesMGreene/8698897 这是20K,没有74k版本中的所有铃铛和哨声。 两者都不是很大。我猜大多数用户都可以接受下载74k或20k文件所需的额外毫秒数,因此复制/粘贴只需单击一次,而不是两次。 – 贾斯廷 评论 2014年10月27日15:35 -
@Justin即使我复制并粘贴示例(我只做了最小的更改,例如 型钢混凝土 在脚本标记中)。 我觉得他们的文档很漂亮,但效率很低。 评论 2015年7月23日13:47
navigator.clipboap.writeText(textToCopy);
异步函数copyTextToClipboard(textToCopy){ 尝试{ 等待navigator.clapper.writeText(textToCopy); console.log('复制到剪贴板') }捕获(错误){ console.log('复制到剪贴板失败。error='+error); } }
功能选择元素内容(el){ //复制文本区域、pre、div等。 if(document.body.createTextRange){ //Internet Explorer(Internet Explorer) var textRange=document.body.createTextRange(); textRange.moveToElementText(el); text范围.select(); textRange.execCommand(“复制”); } else if(window.getSelection&&document.createRange){ //非Internet Explorer var range=文档.createRange(); 范围。selectNodeContents(el); var sel=window.getSelection(); sel.removeAllRanges(); sel.addRange(范围); 尝试{ var成功=document.execCommand('copy'); var msg=成功?' 成功':'不成功'; console.log('复制命令为'+msg); } 捕获(错误){ console.log('Oops,无法复制'); } } }//结束函数selectElementContents(el) 函数make_copy_button(el){ var copy_btn=文档.createElement('input'); copy_btn.type=“按钮”; el.parentNode.insertBefore(copy_btn,el.nextSibling); copy_btn.onclick=函数(){ 选择元素内容(el); }; if(document.queryCommandSupported(“copy”)||parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./) [2]) >= 42) { //复制可与Internet Explorer 4+、Chrome 42+、Firefox 41+、Opera 29配合使用+ copy_btn.value=“复制到剪贴板”; } 其他{ //仅适用于Safari和旧版Chrome、Firefox和Opera copy_btn.value=“全选(然后按Ctrl+C进行复制)”; } } /*注意:document.queryCommandSupported(“copy”)在支持复制的浏览器上应返回“true”, 但是Chrome版本42到47中有一个错误,使得它返回“false”。 所以在那些 Chrome功能检测版本不起作用! 请参见 https://code.google.com/p/chrome/issues/detail?id=476508 */ make_copy_button(document.getElementById(“标记”));
<pre-id=“标记”> 可以通过跨浏览器支持复制或选择的文本。 </pre>
使用cssText避免Internet Explorer中的异常,而不是直接使用样式。 恢复选择(如果有) 设置为只读,这样移动设备上就不会出现键盘 有一个针对iOS的解决方案,这样它就可以像通常阻止execCommand那样工作。
const copyToClipboard=(函数initClipboardText(){ const textarea=document.createElement('textarea'); //将其移出屏幕。 textarea.style.cssText='位置:绝对; 左:-99999 em'; //设置为只读,以防止移动设备在以下情况下打开键盘 //文本为.select()’ed。 textarea.setAttribute('readonly',true); document.body.appendChild(文本区域); 返回函数setClipboardText(text){ textarea.value=文本; //检查之前是否选择了任何内容。 const selected=document.getSelection().rangeCount>0? document.getSelection().getRangeAt(0):false; //iOS Safari在没有此黑客攻击的情况下正常阻止编程execCommand复制。 // https://stackoverflow.com/questions/34045777/copy-to-clipboard-using-javascript-in-ios if(navigator.userAgent.match(/ipad|ipod|iphone/i)){ const editable=textarea.contentEditable; textarea.contentEditable=真; const range=文档.createRange(); 范围。selectNodeContents(文本区域); const sel=window.getSelection(); sel.removeAllRanges(); sel.addRange(范围); textarea.setSelectionRange(0,999999); textarea.contentEditable=可编辑; } 其他{ textarea.select(); } 尝试{ const结果=document.execCommand('copy'); //恢复以前的选择。 if(选中){ document.getSelection().removeAllRanges(); document.getSelection().addRange(选中); } 返回结果; } 捕获(错误){ 控制台错误(err); 返回false; } }; })();
//创建一个可编辑的DIV并附加想要复制的HTML内容 var editableDiv=文档.createElement(“div”); 带有(editableDiv){ contentEditable=true; } editableDiv.appendChild(someContentElement); //选择可编辑内容并将其复制到剪贴板 var r=document.body.createTextRange(); r.moveToElementText(可编辑分区); r.选择(); r.execCommand(“复制”); //取消选择,以便浏览器不会使元素保持可见选中状态 r.moveToElementText(someHiddenDiv); r.选择();
-
1
EnybyClipboard()函数{ this.saveSelection=false; this.callback=假; this.pastedText=假; this.restoreSelection=函数(){ if(this.saveSelection){ window.getSelection().removeAllRanges(); for(var i=0;i<this.saveSelection.length;i++){ window.getSelection().addRange(this.saveSelection[i]); } this.saveSelection=false; } }; this.copyText=函数(文本){ var div=$(“special_copy”); if(!div){ div=新元素('pre'{ 'id':'特殊副本', 'style':'不透明度:0; 位置:绝对; 顶部:-10000px; 右:0;' }); div.injectInside(document.body); } div.set(“文本”,text); if(document.createRange){ var rng=文档.createRange(); rng.选择节点内容(div); this.saveSelection=[]; var selection=window.getSelection(); for(var i=0;i<selection.rangeCount;i++){ this.saveSelection[i]=selection.getRangeAt(i); } window.getSelection().removeAllRanges(); window.getSelection().addRange(rng); setTimeout(this.restoreSelection.bind(this),100); }else返回警报('复制不起作用。:('); }; this.getPastedText=函数(){ if(!this.pastedText)警告('没有要粘贴的内容。:('); return this.pastedText; }; this.paseText=函数(回调){ var div=$('特殊粘贴'); if(!div){ div=新元素('textarea'{ 'id':'特殊粘贴', 'style':'不透明度:0; 位置:绝对; 顶部:-10000px; 右:0;' }); div.injectInside(document.body); div.addEvent('keyup',function(){ if(this.callback){ this.pastedText=$('special_poste').get('value'); this.callback.call(null,this.pastedText); this.callback=假; this.pastedText=假; setTimeout(this.restoreSelection.bind(this),100); } }绑定(this)); } div.set('value',''); if(document.createRange){ var rng=文档.createRange(); rng.选择节点内容(div); this.saveSelection=[]; var selection=window.getSelection(); for(var i=0;i<selection.rangeCount;i++){ this.saveSelection[i]=selection.getRangeAt(i); } window.getSelection().removeAllRanges(); window.getSelection().addRange(rng); div.焦点(); this.callback=回调; }else返回警报('粘贴失败。:('); }; }
enyby_clip=新EnybyClipboard();// 初始化 enyby_clip.copyText('some_text');// 将其放入Ctrl+C处理程序并返回true; enyby_clip.pasteText(函数回调(pasted_text)){ 警报(粘贴文本); }); // 将其放入Ctrl+V处理程序并返回true;
-
2 -
1 jsfiddle.net/H2FHC 演示: fiddle.jshell.net/H2FHC/展示 请打开它并按Ctrl+V或Ctrl+C。在FF 19.0中,分叉非常完美。 铬合金25.0.1364.97 m。 Opera 12.14-正常。Safari 5.1.7 for Windows-正常。IE-失败。 – Enyby公司 评论 2013年2月28日12:06 -
对于IE,需要将焦点放在页面内的元素上。 请参阅 fiddle.jshell.net/H2FHC/3/展示 和 fiddle.jshell.net/H2FHC/3 曾在IE 9/10工作。 IE 6/7需要以其他方式创建选择,因为不支持document.createRange。 – Enyby公司 评论 2013年2月28日12:33
<script type=“text/javascript”> 函数copyToClipboard(消息){ var textArea=document.createElement(“textArea”); textArea.value=消息; textArea.style.opacity=“0”; document.body.appendChild(textArea); textArea.focus(); textArea.select(); 尝试{ var成功=document.execCommand('copy'); var msg=成功?' 成功':'不成功'; alert('复制文本命令为'+msg); }捕获(错误){ alert('无法复制值,错误:'+err.message); } document.body.removeChild(textArea); } </script>
copy.addEventListener(“pointerdown”,()=>navigator.clipboader.writeText(“Hello World!”))
<button id=“copy”>复制Hello World</ 按钮>
函数myFunction(){ /*获取文本字段*/ var copyText=document.getElementById(“myInput”); /*选择文本字段*/ copyText.select(); /*复制文本字段内的文本*/ document.execCommand(“复制”); /*提醒复制的文本*/ alert(“复制文本:”+copyText.value); }
<!-- 文本字段--> <input type=“text”value=“Hello Friend”id=“myInput”> <!-- 用于复制文本-->的按钮 复制文本
<input type=“text”value=“Hello World”id=“myId”> 复制文本 <脚本> 函数myFunction(){ var copyText=文档.getElementById(“myId”); copyText.select(); copyText.setSelectionRange(0,99999); navigator.c剪贴板.writeText(copyText.value); } </script>
if(document.createRange){ //Internet Explorer 9和现代浏览器 var r=文档.createRange(); r.setStartBefore(to_copy); r.setEndAfter(to_copy); r.selectNode(to_copy); var sel=window.getSelection(); sel.addRange(r); document.execCommand(“复制”);// 在Firefox上什么都不做 }其他{ //Internet Explorer 8及更早版本。 这东西行不通 //在Internet Explorer 9上。 //(除非强制进入向后兼容模式, //或者选择普通div,而不是img或table)。 var r=document.body.createTextRange(); r.moveToElementText(复制); r.选择() r.execCommand(“复制”); }
npm安装剪贴板--保存
bower安装剪贴板--保存
新ClipboardJS(“#btn1”); document.querySelector(“#btn2”).addEventListener(“click”,()=>document.gerySelector(”#btn1“).dataset.clipboardText=Math.random());
<script src=“ https://cdn.jsdeliver.net/npm网址/ [电子邮件保护] /dist/clipboap.min.js“></script> <button id=“btn1”data-clipboard-text=“此处显示要复制的文本”> 复制到剪贴板 </按钮> 单击此处更改数据剪贴板文本 <br/><br/> <input type=“text”placeholder=“粘贴到此处以查看剪贴板”/>
<p> 复制</a> </p>
-
10 这在当前的Chrome(V31)或FireFox(v25)中不起作用。 错误是window.clipboardData未定义。 从好的方面来说,它在IE9中工作。 所以,只要你不在乎好的浏览器,并想锁定你的网站使用坏的浏览器,这是你的方式! – 安东尼 评论 2013年11月14日14:13 -
4 我不明白为什么会有这么多愚蠢的答案。 w3schools.com/howto/tryit.asp? 文件名=tryhow_js_copy_clipboard – 火星人火星人 评论 2018年2月8日1:56
<script type=“text/javascript”> $(document).ready(function()){ $(“#copy_btn_id”).单击(函数(){ $.post(“<?php-echo base_url();?>ajax/foo_copy/”+$(this).val(),空, 功能(数据){ //复制成功 },“html” ); }); $(“#paste_btn_id”).单击(函数(){ $.post(“<?php-echo base_url();?>ajax/foo_paste/”,空, 函数(数据){ $('#paste_btn_id').val(数据); },“html” ); }); }); </script>
<input type='text'id='copy_btn_id'onclick='this.select();' value='myvalue'/> <input type='text'id='past_btn_id'value=''/>
<? php(电话) Ajax类扩展了CI_Controller{ 公共函数foo_copy($val){ $this->session->set_userdata(数组('clipboard_val'=>$val)); } 公共函数foo_paste(){ echo$this->session->userdata('clipboard_val'); 退出(); } } ?>