ios下使用clipboard复制异步数据为什么会失败?

需求是在点击按钮的时候,先发起请求拿接口数据,请求成功后直接复制到粘贴板实现复制功能,使用clipboard库以及手写navigator.clipboard.writeText,在ios下会失败(偶尔会成功但是大概率都是失败),代码如下。

import React, { useState, Suspense, useEffect } from "react";
import Clipboard from 'clipboard';
const SendSms = () => {
    const onCopy = (props) {
        const clipboard = new Clipboard(props.domTarget, {
            text: function () {
                return props.content;
            },
        });
        clipboard.on('success', () => {
            if (props.success) props.success();
            clipboard.destroy();
        });
        clipboard.on('error', (eee) => {
            if (props.fail) props.fail(eee);
            clipboard.destroy();
        });
        return clipboard;
    }
    
  const copyLink = async () => {
    // 模拟接口请求
    const url = await post('./a');
    onCopy({
      domTarget: "#shareLinkWrap",
      content: url || "",
      success: () => {
        alert('成功')
      },
      fail: (err) => {
        alert('失败')
      },
    });

    setTimeout(() => {
      document?.getElementById("shareLinkWrap")?.click();
    }, 200);
  };
  return (
    <div id="shareLinkWrap" onMouseDown={copyLink} className="copy-link">
      <span className="icon"></span>
      <span className="name">复制</span>
    </div>
  );
};
export default SendSms;

请问下ios为什么会有这个问题?有解决办法吗?

阅读 674
1 个回答
推荐问题