ToB企服应用市场:ToB评测及商务社交产业平台
标题:
解决clipboard.js在IOS上无法复制异步获取的文本的问题
[打印本页]
作者:
伤心客
时间:
2024-8-19 23:50
标题:
解决clipboard.js在IOS上无法复制异步获取的文本的问题
一、问题详情
使用clipboard.js复制从接口异步获取的文本时,PC及安卓都正常。在IOS中提示复制成功但实际剪切板中无文本。
二、解决方案
思绪:
将触发复制元素和传入ClipboardJs构造函数的元素分开,期望在异步获取文本后,再同步触发传入ClipboardJs构造函数的元素的点击事件,发现这只能解决在PC和安卓中异步复制的问题,但IOS中依然无法生效。
基于上面的思绪,决定在点击触发复制元素,异步获取文本,在IOS中再次用代码触发复制元素的点击事件,代码如下:
HTML代码
<button id="copy-btn" @click="onCopy">复制文本</button>
<div id="copy-div" />
复制代码
vuejs代码
export default {
data() {
return {
copyStr: ''
}
},
mounted() {
const that = this
this.clipboard = new ClipboardJS('#copy-div', {
text() {
return that.copyStr
}
})
this.clipboard.on('success', () => {
console.log('success')
})
this.clipboard.on('error', () => {
console.log('error')
})
},
methods: {
onCopy() {
if (this.copyStr) {
document.getElementById('#copy-div').click()
} else {
// simulate asynchronous behavior
setTimeout(() => {
this.copyStr = 'helloWord'
if (isIOS) {
document.getElementById('#copy-btn').click()
} else {
document.getElementById('#copy-div').click()
}
}, 1000)
}
}
}
}
复制代码
三、总结
不算完美的方案,但算解决了问题。
不足之处,多次触发点击事件,代码不敷优雅。
如有更好方式接待评论交换!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4