需求是在点击按钮的时候,先发起请求拿接口数据,请求成功后直接复制到粘贴板实现复制功能,使用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
为什么会有这个问题?有解决办法吗?
功后直接复制到粘贴板实现复制