欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 关于H5复制ios没有效果

关于H5复制ios没有效果

2025/1/16 0:17:02 来源:https://blog.csdn.net/yc1425869600/article/details/145119378  浏览:    关键词:关于H5复制ios没有效果

问题场景:今天遇到这样一个问题,需要从后端接口获取到的值进行复制,且不能提现调用获取值,因为是一个数据列表,每个列表元素需要当场点击调用接口获取值进行复制,本来以为很简单的一个需求,当做好之后发布到线上发现ios机型无效

api:uni.setClipboardData

原因:这是iOS的安全限制,要求复制操作必须是由用户直接触发的同步操作。如果在异步回调中调用复制API,iOS会认为这不是用户直接触发的操作,从而拒绝执行。

有一个解决方法,一个降级方案

解决方法:
使用 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复制

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com