学习使用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才会实现换行