js复制文本
第一种: 自己测试时 只适合于input 和textarea 但是针对于其他标签的复制就不能用了。代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset="utf-8" /> </head> <body> <input id="daima" value="11111">11111</input> <input type="button" id="Copy" value="点击复制代码" /> </body> </html> <script src="js/jquery-1.8.3.min.js"></script> <script type="text/javascript"> $("#Copy").click(function() { var copyText = $("#daima");//获取对象 copyText .select();//选择 document.execCommand("Copy");//执行复制 alert("复制成功!"); }) </script> 上述代码如果为了美观需要写一部分代码进行处理输入框的样子;但是个人感觉要比第二种的代码要少一部分。 第二种: 适用所有的标签,进行把内容传递到创建的input对象当中,进行处理复制的操作,相比第一种要写不少js。测试代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset="utf-8" /> </head> <body> <span id="daima">11111</span> <input type="button" id="Copy" value="点击复制代码" /> </body> </html> <script src="js/jquery-1.8.3.min.js"></script> <script type="text/javascript"> $("#Copy").click(function() { var ssrsss = $("#daima").text();//获取文本 var flag = copyText(ssrsss); //传递文本 alert(flag ? "复制成功!" : "复制失败!"); }) function copyText(text) { var textarea = document.createElement("input");//创建input对象 var currentFocus = document.activeElement;//当前获得焦点的元素 document.body.appendChild(textarea);//添加元素 textarea.value = text; textarea.focus(); if(textarea.setSelectionRange) textarea.setSelectionRange(0, textarea.value.length);//获取光标起始位置到结束位置 else textarea.select(); try { var flag = document.execCommand("copy");//执行复制 } catch(eo) { var flag = false; } document.body.removeChild(textarea);//删除元素 currentFocus.focus(); return flag; } </script>
动态创建
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <button onclick='linkUrl()'>一键复制模板</button> <script> function linkUrl(){ let url = 'www.baidu.com'; //拿到想要复制的值 let copyInput = document.createElement('input');//创建input元素 document.body.appendChild(copyInput);//向页面底部追加输入框 copyInput.setAttribute('value', url);//添加属性,将url赋值给input元素的value属性 copyInput.select();//选择input元素 document.execCommand("Copy");//执行复制命令 console.log("链接已复制!");//弹出提示信息,不同组件可能存在写法不同 //复制之后再删除元素,否则无法成功赋值 copyInput.remove();//删除动态创建的节点 } </script> </body> </html>
Vue项目同理,简单调整
<button @click='linkUrl(item)'>点击复制</button> linkUrl(item){ let url = item.url;//拿到想要复制的值 let copyInput = document.createElement('input');//创建input元素 document.body.appendChild(copyInput);//向页面底部追加输入框 copyInput.setAttribute('value', url);//添加属性,将url赋值给input元素的value属性 copyInput.select();//选择input元素 document.execCommand("Copy");//执行复制命令 this.$message.success("链接已复制!");//弹出提示信息,不同组件可能存在写法不同 //复制之后再删除元素,否则无法成功赋值 copyInput.remove();//删除动态创建的节点 }