rt
复制操作代码:
navigator.clipboard.writeText(address).then(() => {
Toast.show({ content: '复制成功', duration: 2000 });
});
经过尝试,在苹果手机iphone系列中可以正常复制,但是在安卓手机(小米华为OPPO)中复制失败,模拟器上无法复现这个问题,请问是什么原因导致的呢?在安卓手机的浏览器中打开H5页面时是可以复制成功的,但是小程序webview打开该H5页面时是复制失败的。
使用其他复制操作可以实现复制功能吗?比如下述代码:
var ele = document.createElement('input'); //创建一个input标签
ele.setAttribute('value', address); // 设置改input的value值
document.body.appendChild(ele); // 将input添加到body
ele.select(); // 获取input的文本内容
document.execCommand('copy'); // 执行copy指令
document.body.removeChild(ele); // 删除input标签
都快2025年了,这个问题还存在
2023年11月,仍然有这个问题。
navigator.clipboard.writeText("text").then(res => { console.log("Success " + JSON.stringify(res)); }).catch(e => { console.log("Error " + e.message); });
以上代码在安卓机型的微信上会返回:Error Write permission denied.
微信版本:8.0.37
安卓版本:13
iOS的微信上没有问题。安卓自带的Chrome浏览器没有问题。
确实恶心,你用他们微信自带的api算了
const copyToClipboard = (text) => { const isSafari = navigator.userAgent.match(/iPad|iPhone|iPod|Macintosh/i) return new Promise((resolve) => { // iOS 才用现代的方法复制,因为微信小程序安卓 webview 上用这个方法会报错 if (navigator.clipboard && isSafari) { navigator.clipboard .writeText(text) .then(() => { resolve(true) }) .catch(() => { resolve(false) }) } else { import('copy-to-clipboard').then(({ default: copy }) => { resolve( copy(text, { format: 'text/plain', message: '请点击确定按钮复制链接', }) ) }) } }) }
给一段代码供大家参考,总的思路就是,iOS 使用现代的 navigator.clipboard 来实现复制,安卓上面的还是走传统的方法来复制(传统的方法在 iOS 上已经不好使了,要不然就统一用了)。
我也遇到了这个问题,请问这个问题解决了吗?