学习使用js复制指定div、a标签内的文本内容,支持换行

文章介绍了如何使用JavaScript和jQuery来复制HTML中的div和a标签内的文本内容,包括处理换行的情况。提供了示例代码,包括点击复制功能的实现,以及在不同浏览器环境下兼容性处理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习使用js复制指定div、a标签内的文本内容,支持换行

html代码

<a class="chat_a" onclick="copy_text(this)" href="javascript:void(0);">赠汪伦,其一:<br>李白乘舟将欲行,忽闻岸上踏歌声。<br>桃花潭水深千尺,不及汪伦送我情。<br>赠汪伦,其二:<br>李白乘舟将欲行,又闻岸上踏歌声。<br>声断红楼梦,夜阑起白妍。<br>赠汪伦,其三:<br>李白乘舟将欲行,忽闻岸上踏歌声。<br>桃花潭水深千尺,不及汪伦送我情。<br>挥手自兹去,萧萧班马鸣。</a>

js和jquery函数

//点击复制
    function copy_text(that) {

        let chat_content = $(that).text();
        console.log('copy_text----chat_content==', chat_content);

        /*
        let chat_html = $(that).html();
         console.log('copy_text----chat_html==', chat_html);
       */

        //赋值给文本框 打印一下
        $("#talkwords").val(chat_content);


        var text = $(that)[0];
        //做下兼容
        if (document.body.createTextRange) {  //如果支持
            var range = document.body.createTextRange(); //获取range
            range.moveToElementText(text); //光标移上去
            range.select();  //选择
        } else if (window.getSelection) {
            var selection = window.getSelection(); //获取selection
            var range = document.createRange(); //创建range
            range.selectNodeContents(text);  //选择节点内容
            selection.removeAllRanges(); //移除所有range
            selection.addRange(range);  //添加range
            /*if(selection.setBaseAndExtent){
             selection.setBaseAndExtent(text, 0, text, 1);
             }*/
        } else {
            alert("复制失败");
        }

        document.execCommand('copy');
        alert('已复制好,可贴粘!');

    }

效果图

在这里插入图片描述

不显示复制内容,仍支持复制代码示例,并支持换行

<img src="img/copy.png"
     data-text="赠汪伦,其一:
 李白乘舟将欲行,忽闻岸上踏歌声。
 桃花潭水深千尺,不及汪伦送我情。
赠汪伦,其二:
 李白乘舟将欲行,又闻岸上踏歌声。"
     onclick="copy('赠汪伦,其一:\n 李白乘舟将欲行,忽闻岸上踏歌声。 \r\n 桃花潭水深千尺,不及汪伦送我情。\r赠汪伦,其二:\n 李白乘舟将欲行,又闻岸上踏歌声。')">

    function copy(codeData) {

        const textarea = document.createElement('textarea'); // 直接构建textarea  「注意:这里为了实现换行,需要创建textarea,如果用input的话,实现不了换行。」
        textarea.value = codeData; // 设置内容    「注意: \r\n 是 换行 符号」
        document.body.appendChild(textarea); // 添加临时实例
        textarea.select(); // 选择实例内容
        document.execCommand('Copy'); // 执行复制
        document.body.removeChild(textarea); // 删除临时实例
        console.log('复制成功!');
        ElMessage({
            message: '复制成功',
            type: 'success',
        });

    }

元素为input时 字符串中\n不会换行 必须为textarea, \n才会实现换行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值