在用uni-app写项目的时候,编译H5,复制功能没法使用uni-app自己封装的方法,特此记录!!!
copyText(node) {
if (!node) {
return;
}
var result;
// 将复制内容添加到临时textarea元素中
var tempTextarea = document.createElement('textarea');
document.body.appendChild(tempTextarea);
if (typeof(node) == 'object') {
// 复制节点中内容
// 是否表单
if (node.value) {
tempTextarea.value = node.value;
} else {
tempTextarea.value = node.innerHTML;
}
} else {
// 直接复制文本
tempTextarea.value = node;
}
// 判断设备
var u = navigator.userAgent;
console.log(u.match(/(iPhone|iPod|iPad);?/i))
if (u.match(/(iPhone|iPod|iPad);?/i)) {
// iOS
// 移除已选择的元素
window.getSelection().removeAllRanges();
// 创建一个Range对象
var range = document.createRange();
// 选中
range.selectNode(tempTextarea);
tempTextarea.select();
// 执行选中元素
window.getSelection().addRange(range);
// 复制
result = document.execCommand('copy');
// 移除选中元素
window.getSelection().removeAllRanges();
} else {
// 选中
tempTextarea.select();
// 复制
result = document.execCommand('Copy');
}
// 移除临时文本域
document.body.removeChild(tempTextarea);
if (result) {
uni.showToast({
duration:1000,
icon:'none',
title:"复制成功"
})
} else {
uni.showToast({
duration:1000,
icon:'none',
title:"复制失败"
})
}
return result;
}
将这个方法放到methods 对象中,使用条件编译
// #ifdef H5
_this.copyText('要复制的字符串');
// #endif
|