From f7d6d7767a3d4fcdaac0d8e8ffbf883047ae59f8 Mon Sep 17 00:00:00 2001 From: yezian Date: Mon, 5 Feb 2024 16:29:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=99=E5=85=A5=E5=89=AA=E8=B4=B4=E6=9D=BF?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=96=B9=E5=BC=8F=E6=9B=B4=E6=94=B9=E4=B8=BA?= =?UTF-8?q?document.execCommand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/[user_id]/page.jsx | 15 ++++++--------- app/download/[user_id]/page.jsx | 13 +++++-------- app/purchased/page.jsx | 3 ++- app/weibo/[user_id]/page.jsx | 26 +++++--------------------- utils/copy.js | 22 ++++++++++++++++++++++ 5 files changed, 40 insertions(+), 39 deletions(-) create mode 100644 utils/copy.js diff --git a/app/[user_id]/page.jsx b/app/[user_id]/page.jsx index 7792e95..9e5dd09 100644 --- a/app/[user_id]/page.jsx +++ b/app/[user_id]/page.jsx @@ -12,6 +12,7 @@ import verification from "@/public/icon/verification.png"; import icon_border from "@/public/images/icon_border.png"; import Link from "next/link"; import { setCookie } from "cookies-next"; +import copy from "@/utils/copy"; export default function StreamerDetail({ params }) { //页面数据 @@ -53,15 +54,11 @@ export default function StreamerDetail({ params }) { }, []); //将主播链接复制到剪贴板,并存cookie - const copyAndSetCookieInviter = async () => { - try { - setCookie("inviter", data?.user_id); - await navigator.clipboard.writeText( - `【${data?.name}】『ID:${data?.user_id}』,复制此条消息,打开铁粉空间APP,查看详情https://tiefen.fun/${data?.user_id}` - ); - } catch (error) { - console.error("复制到剪贴板时出现错误:", error); - } + const copyAndSetCookieInviter = () => { + setCookie("inviter", data?.user_id); + copy( + `【${data?.name}】『ID:${data?.user_id}』,复制此条消息,打开铁粉空间APP,查看详情https://tiefen.fun/${data?.user_id}` + ); }; return ( diff --git a/app/download/[user_id]/page.jsx b/app/download/[user_id]/page.jsx index cd0c60b..68002ad 100644 --- a/app/download/[user_id]/page.jsx +++ b/app/download/[user_id]/page.jsx @@ -15,6 +15,7 @@ import baseRequest from "@/utils/baseRequest"; import { generateSignature } from "@/utils/crypto"; import { Toast } from "antd-mobile"; import icon_border from "@/public/images/icon_border.png"; +import copy from "@/utils/copy"; export default function Download({ params }) { const [deviceType, setDeviceType] = useState(""); @@ -31,14 +32,10 @@ export default function Download({ params }) { }, []); //点下载在剪贴板写入主播邀请信息 - const copyInviter = async () => { - try { - await navigator.clipboard.writeText( - `复制此条消息,打开铁粉空间APP,查看详情https://tiefen.fun/${params.user_id}` - ); - } catch (error) { - console.error("复制到剪贴板时出现错误:", error); - } + const copyInviter = () => { + copy( + `【${data?.name}】『ID:${data?.user_id}』,复制此条消息,打开铁粉空间APP,查看详情https://tiefen.fun/${data?.user_id}` + ); }; //页面数据 diff --git a/app/purchased/page.jsx b/app/purchased/page.jsx index ddaea89..e46adfc 100644 --- a/app/purchased/page.jsx +++ b/app/purchased/page.jsx @@ -6,6 +6,7 @@ import { checkAuth } from "@/utils/auth"; import { useRouter } from "next/navigation"; import baseRequest from "@/utils/baseRequest"; import { generateSignature } from "@/utils/crypto"; +import copy from "@/utils/copy"; export default function Purchased() { //如果没登录直接跳转下载页 @@ -159,7 +160,7 @@ export default function Purchased() { const GetWechatModal = () => { const handleCopy = () => { - navigator.clipboard.writeText(currentWechat); + copy(currentWechat); Toast.show({ content: "复制成功", }); diff --git a/app/weibo/[user_id]/page.jsx b/app/weibo/[user_id]/page.jsx index 791816e..8718b23 100644 --- a/app/weibo/[user_id]/page.jsx +++ b/app/weibo/[user_id]/page.jsx @@ -8,6 +8,7 @@ import { generateSignature } from "@/utils/crypto"; import Image from "next/image"; import verification from "@/public/icon/verification.png"; import Link from "next/link"; +import copy from "@/utils/copy"; export default function Weibo({ params }) { //页面数据 @@ -49,27 +50,10 @@ export default function Weibo({ params }) { }, []); //将主播链接复制到剪贴板 - const copyInviter = async () => { - let input = document.createElement("input"); - input.style.position = "fixed"; - input.style.top = "-10000px"; - input.style.zIndex = "-999"; - document.body.appendChild(input); - input.value = `【${data?.name}】『ID:${data?.user_id}』,复制此条消息,打开铁粉空间APP,查看详情https://tiefen.fun/${data?.user_id}`; - input.focus(); - input.select(); - try { - let result = document.execCommand("copy"); - document.body.removeChild(input); - if (!result || result === "unsuccessful") { - console.log("复制失败"); - } else { - console.log("复制成功"); - } - } catch (e) { - document.body.removeChild(input); - console.log("当前浏览器不支持复制功能,请检查更新或更换其他浏览器操作"); - } + const copyInviter = () => { + copy( + `【${data?.name}】『ID:${data?.user_id}』,复制此条消息,打开铁粉空间APP,查看详情https://tiefen.fun/${data?.user_id}` + ); }; return ( diff --git a/utils/copy.js b/utils/copy.js new file mode 100644 index 0000000..5677558 --- /dev/null +++ b/utils/copy.js @@ -0,0 +1,22 @@ +export default function copy(text = "") { + let input = document.createElement("input"); + input.style.position = "fixed"; + input.style.top = "-10000px"; + input.style.zIndex = "-999"; + document.body.appendChild(input); + input.value = text; + input.focus(); + input.select(); + try { + let result = document.execCommand("copy"); + document.body.removeChild(input); + if (!result || result === "unsuccessful") { + console.log("复制失败"); + } else { + console.log("复制成功"); + } + } catch (e) { + document.body.removeChild(input); + console.log("当前浏览器不支持复制功能,请检查更新或更换其他浏览器操作"); + } +}