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();//删除动态创建的节点
}

 

posted @ 2019-08-09 20:32    阅读(373)  评论(0编辑  收藏  举报