代码实现:
copy() {
let replacedContent = this.form.resTaskBaseInfoDetail.content;
let text = readHtml(replacedContent)
// #ifdef H5
let textarea = document.createElement("textarea")
textarea.value = text
textarea.readOnly = "readOnly"
document.body.appendChild(textarea)
textarea.select() // 选中文本内容
textarea.setSelectionRange(0, text.length)
uni.showToast({ //提示
title: '复制成功',
icon: 'success'
})
document.execCommand("copy")
textarea.remove()
// #endif
// #ifndef H5
uni.setClipboardData({
data: text, //要被复制的内容
success: () => { //复制成功的回调函数
uni.showToast({ //提示
title: `复制成功`,
icon: 'success'
})
}
}, true);
// #endif
},
工具方法:
// 提取html中文本
export const readHtml = (html) => {
// 去掉注释,script,style,textarea,input,实体字符&开头;结尾
let res = html.replace(/(<!--)([\s\S]*?)(-->)/g, "").replace(
/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
"").replace(/(<style)([\s\S]*?)(\/style>)/g, '').replace(/(<textarea)([\s\S]*?)(\/>)/g, '').replace(
/(<input)([\s\S]*?)(\/>)/g, '').replace(/&([\s\S]*?);/g, '')
// 提取><中间文字 多空格为一个 ><
let result = res.replace(/(?=\<[\s\S]*?)([\s\S]*?)(?=\>)/g, "").replace(/\>/g, " ").replace(/\s+/g, " ")
return result
}