uniapp uni.setClipboardData h5在某些浏览器上报错setClipboardData fail的问题

解决H5剪贴板兼容问题

虽然官方给的平台差异上是支持h5的,但是实际上在浏览器的支持上不太相同

以下是做的兼容处理逻辑以及代码:

1.调用uni.setClipboardData,成功不管,若是执行了失败的回调,执行2

2.调用clipboard api,也就是navigator.clipboard.writeText,成功不管,若是未找到navigator.clipboard,执行3

3.调用document.execCommand('copy'),声明execCommand('copy')其实已经废弃了,若还是不行,做提示让用户自行复制吧

第二步方法:

function navigatorCopy(text){
        if(navigator.clipboard && navigator.clipboard.writeText){
          navigator.clipboard.writeText(text).then(() => {
            uni.showToast({
              title:'已复制',
              icon:'none',
            })
          }).catch(err=>{
            this.documentCopy(text)
          })
        }else{
          this.documentCopy(text)
        }
      }

第三步方法:

function documentCopy(text){
        const textarea = document.createElement('textarea')
        textarea.value = text
        textarea.style.position = 'fixed'
        textarea.style.opacity = '0'
        document.body.appendChild(textarea)
        textarea.select()

        try {
          const successful = document.execCommand('copy')
          document.body.removeChild(textarea)
          if (successful) {
            uni.showToast({
              title:'已复制',
              icon:'none',
            })
          } else {
            uni.showToast({
              title:'复制失败,请手动复制:' + text,
              icon:'none',
            })
          }
        } catch (err) {
          document.body.removeChild(textarea)
          uni.showToast({
            title:'复制失败,请手动复制:' + text,
            icon:'none',
          })
        }
      }

结束!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值