ios(苹果)在微信公众号上面复制文本和其他环境不一样

做了一个需求,真是耗了一下午的时间,需求是后端给我的一端文本,我需要复制下来,所处环境是微信公众号,前两天我以为我已经开发好了,在微信开发者工具和同事的手机上面测试都没问题,今天拿我的手机测试,结果有所不同,下面我来详细说一下过程以及解决方法。

我之前用的 复制文本 方法 是 

// 复制方法一
function copyTextToClipboardOld(text) {  
  /* 创建一个临时的textarea元素 */  
  const textarea = document.createElement('textarea');  
  textarea.value = text;  
  textarea.style.position = 'fixed'; // 防止滚动  
  document.body.appendChild(textarea);  
  textarea.select();  
  try {  
    const successful = document.execCommand('copy');  
    const msg = successful ? '成功' : '失败';  
    console.log('文本复制' + msg);  
  } catch (err) {  
    console.error('复制失败:', err);  
  }  
  document.body.removeChild(textarea);  
}  

// 复制方法二
async function copyTextToClipboard(text) {  
  try {  
    await navigator.clipboard.writeText(text);  
    console.log('文本已复制到剪贴板');  
  } catch (err) {  
    console.error('复制失败:', err);  
  }  
}  
  
// 使用示例  
const textToCopy = '这是一段需要复制的文本';  
copyTextToClipboard(textToCopy);

但是在后面的过程中,我就换成了 copy-to-clipboard 这个包,所以后面的解决办法,如果针对前面的两个复制方法,没有用,可以 换成 copy-to-clipboard 这个包尝试

解决方法:在苹果的复制中,不要复制功能放在请求中,在复制之前先请求,存好数据,后面需要复制的时候直接复制就好了

下面是我的案例代码

<template>
  <div>
    <van-button type="primary"
                @click="copyOne">复制一,全部可以</van-button>
    <van-button type="primary"
                @click="copyTwo">复制二,苹果在微信公众号会有问题</van-button>
  </div>
</template>

<script>
import copyToClipboard from 'copy-to-clipboard';
import axios from 'axios'
export default {
  name: 'test1',
  data () {
    return {
      msg: '一段话'
    }
  },
  methods: {


    copyOne () {
      const result = copyToClipboard(this.msg)
      if (result) {
        this.$toast('复制成功')
      } else {
        this.$toast('复制失败')
      }

    },
    copyTwo () {
      this.getData().then(() => {
        const result = copyToClipboard(this.msg)
        if (result) {
          this.$toast('复制成功')
        } else {
          this.$toast('复制失败')
        }
      }).catch(() => {
        this.$toast('获取数据失败')
      })
    },
    getData () {
      return new Promise((resolve, reject) => {
        axios({
          method: 'get',
          url: 'https://api.uomg.com/api/rand.qinghua', // 随便找的接口,模拟开发中的请求,如果接口不可以用了,自己找一个来模拟   
        }).then((res) => {
          this.msg = res.data.content
          //   console.log(res, 'res');
          resolve()
        }).catch((err) => {
          //   console.log(err, 'err');
          reject()
        })
      })
    },
  }
}
</script>

<style>
</style>	

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值