收藏
回答

在安卓手机通过小程序Webview打开H5页面,H5页面的复制功能为什么失败了?

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标签



回答关注问题邀请回答
收藏

5 个回答

  • t
    t
    06-13

    都快2025年了,这个问题还存在

    06-13
    有用 1
    回复
  • PhiliP Wu
    PhiliP Wu
    2023-11-21

    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浏览器没有问题。


    2023-11-21
    有用
    回复
  • llnn
    llnn
    2023-06-09

    确实恶心,你用他们微信自带的api算了

    2023-06-09
    有用
    回复
  • 何锦余
    何锦余
    2022-06-24
    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 上已经不好使了,要不然就统一用了)。

    2022-06-24
    有用
    回复 2
    • aMan
      aMan
      2022-07-19
      这个兼容ios12版本的吗?比较旧的,目前不支持document api copy功能的
      2022-07-19
      回复
    • 何锦余
      何锦余
      2022-10-01回复aMan
      根据 caniuse 的数据,从 iOS 13.4 才支持,iOS 12 应该是不支持的。
      2022-10-01
      回复
  • 朱
    2022-05-30

    我也遇到了这个问题,请问这个问题解决了吗?

    2022-05-30
    有用
    回复
登录 后发表内容