注意 navigator.clipboard.writeText可能会被浏览器禁用,还是需要使用兼容的 document.execCommand('copy')
//navigator.clipboard.writeText可能会被浏览器禁用
copy() {
// navigator clipboard 需要https等安全上下文
if (navigator.clipboard && window.isSecureContext) {
// navigator clipboard 向剪贴板写文本
navigator.clipboard.writeText(this.resourceContent)
this.successMsgBox('复制成功')
} else {
// 创建text area
let textArea = document.createElement('textarea')
textArea.value = this.resourceContent
// 使text area不在viewport,同时设置不可见
textArea.style.position = 'absolute'
textArea.style.opacity = 0
textArea.style.left = '-999999px'
textArea.style.top = '-999999px'
document.body.appendChild(textArea)
textArea.focus()
textArea.select()
return new Promise((res, rej) => {
// 执行复制命令并移除文本框
document.execCommand('copy') ? res('复制成功') : rej('复制失败')
textArea.remove()
})
.then((res) => {
// 从 resolve 获取正常结果
console.log(res)
this.successMsgBox(res)
})
.catch((res) => {
// 从 reject 获取异常结果
console.log(res)
this.successMsgBox(res)
})
}
},
更多资源访问:代码资源