需求是页面进入时就复制下载链接,而ClipboardJS必须触发click才能复制,js触发的不能复制,只有用户点击触发才能复制,有没有什么方法兼容全端的情况下实现这个需求
需求是页面进入时就复制下载链接,而ClipboardJS必须触发click才能复制,js触发的不能复制,只有用户点击触发才能复制,有没有什么方法兼容全端的情况下实现这个需求
以下代码我的APP中 在onMounted 中调用copy可以复制成功
const copy = async()=>{
try{
await toClipboard(content.value,copytag.value)
console.log('copy success')
copyed.value = true
content.value = '复制成功!'
} catch(e){
console.log(e)
}
}
const toClipboard=(text: string, container?: HTMLElement) =>{
return new Promise((resolve, reject) => {
// make fake element
const fakeEl = document.createElement('button')
// setup a new Clipboard.js
const clipboard = new Clipboard(fakeEl, {
text: () => text,
action: () => 'copy',
container: container !== undefined ? container : document.body
})
clipboard.on('success', (e) => {
clipboard.destroy()
resolve(e)
})
clipboard.on('error', (e) => {
clipboard.destroy()
reject(e)
})
// appendToBody fixes IE
//if (appendToBody) document.body.appendChild(fakeEl)
// simulate click
fakeEl.click()
// remove from body if appended
//if (appendToBody) document.body.removeChild(fakeEl)
})
}
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
document.execCommand()
这个 API 只能在用户操作之后才能被触发。不要想用什么办法绕过了。非要做的话,就做页面打开之后就做一个遮罩,可以让用户点击任意位置去执行
copy
方法。