网站建设方案实训总结,网站开发程序排名,邢台做网站推广的地方,做兼职在什么网站找比较好问题场景#xff1a;今天遇到这样一个问题#xff0c;需要从后端接口获取到的值进行复制#xff0c;且不能提现调用获取值#xff0c;因为是一个数据列表#xff0c;每个列表元素需要当场点击调用接口获取值进行复制#xff0c;本来以为很简单的一个需求#xff0c;当做…问题场景今天遇到这样一个问题需要从后端接口获取到的值进行复制且不能提现调用获取值因为是一个数据列表每个列表元素需要当场点击调用接口获取值进行复制本来以为很简单的一个需求当做好之后发布到线上发现ios机型无效
api:uni.setClipboardData
原因这是iOS的安全限制要求复制操作必须是由用户直接触发的同步操作。如果在异步回调中调用复制APIiOS会认为这不是用户直接触发的操作从而拒绝执行。
有一个解决方法一个降级方案
解决方法 使用 async/await 保证在同一个事件循环中完成复制
async function copyContent() {uni.showLoading({title: 加载中...});try {const content await new Promise((resolve, reject) {request({url: /api/xxx,success: (res) resolve(res.data),fail: (err) reject(err)});});uni.hideLoading();uni.setClipboardData({data: content,success: function() {uni.showToast({title: that.i18n.page.text24,icon: none});}});} catch(err) {uni.hideLoading();console.error(err);}
}降级方案点击按钮调用接口获取到值弹出弹框在弹框点击按钮调api复制