if (!text) {
this.$message({ message: '无可复制链接', type: 'warning' })
return false
}
const hasNative = typeof navigator !== 'undefined' && navigator.clipboard && typeof navigator.clipboard.writeText === 'function'
if (hasNative) {
try {
await navigator.clipboard.writeText(text)
this.$message({ message: '复制成功', type: 'success' })
return true
} catch (err) {
console.error('navigator.clipboard.writeText 失败,使用回退:', err)
this.fallbackCopy(text)
return false
}
} else {
this.fallbackCopy(text)
return false
}
},
fallbackCopy(text) {
const textarea = document.createElement('textarea')
textarea.value = text
// 避免页面滚动到 textarea
textarea.style.position = 'fixed'
textarea.style.left = '-9999px'
document.body.appendChild(textarea)
textarea.select()
try {
const successful = document.execCommand('copy')
if (successful) {
this.$message({ message: '复制成功', type: 'success' })
} else {
this.$message({ message: '复制失败,请手动复制', type: 'error' })
}
} catch (err) {
this.$message({ message: '复制失败,请手动复制', type: 'error' })
}
document.body.removeChild(textarea)
},