From dcb4c55a74b39764e0e90611b4bdc460a8f40d2a Mon Sep 17 00:00:00 2001 From: basssy Date: Mon, 6 Jan 2025 10:17:43 +0900 Subject: [PATCH] =?UTF-8?q?navigator.clipboard=20=EB=A1=9C=EC=BB=AC?= =?UTF-8?q?=EC=9D=B4=EB=82=98=20http=EC=97=90=EC=84=9C=EB=A7=8C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EA=B0=80=EB=8A=A5..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/management/Stuff.jsx | 47 +++++++++++++++++++---- src/components/management/StuffHeader.jsx | 46 +++++++++++++++++++--- 2 files changed, 81 insertions(+), 12 deletions(-) diff --git a/src/components/management/Stuff.jsx b/src/components/management/Stuff.jsx index 65a8a2eb..a6cbf702 100644 --- a/src/components/management/Stuff.jsx +++ b/src/components/management/Stuff.jsx @@ -17,6 +17,7 @@ import QPagination from '../common/pagination/QPagination' import { SessionContext } from '@/app/SessionProvider' import { QcastContext } from '@/app/QcastProvider' +import { e } from 'mathjs' export default function Stuff() { const { setIsGlobalLoading } = useContext(QcastContext) @@ -41,13 +42,45 @@ export default function Stuff() { //그리드 내부 복사버튼 const copyNo = async (value) => { - try { - console.log('value::::::::', value) - await navigator.clipboard.writeText(value) - alert(getMessage('stuff.detail.header.successCopy')) - } catch (error) { - console.log('error::::::::::', error) - alert(getMessage('stuff.detail.header.failCopy')) + // try { + // await navigator.clipboard.writeText(value) + // alert(getMessage('stuff.detail.header.successCopy')) + // } catch (error) { + // alert(getMessage('stuff.detail.header.failCopy')) + // } + // Navigator clipboard api needs a secure context (https) + if (navigator.clipboard && window.isSecureContext) { + console.log('확인11', value) + await navigator.clipboard + .writeText(value) + .then(() => { + alert(getMessage('stuff.detail.header.successCopy')) + }) + .catch((err) => { + alert(getMessage('stuff.detail.header.failCopy')) + }) + } else { + console.log('확인22', value) + // Use the 'out of viewport hidden text area' trick + const textArea = document.createElement('textArea') + textArea.value = value + + // Move textarea out of the viewport so it's not visible + textArea.style.position = 'absolute' + textArea.style.left = '-999999px' + + document.body.prepend(textArea) + textArea.select() + + try { + console.log('deprecated::document.execCommand(`copy`)', document.execCommand('copy')) + document.execCommand('copy') + alert(getMessage('stuff.detail.header.successCopy')) + } catch (err) { + alert(getMessage('stuff.detail.header.failCopy')) + } finally { + textArea.remove() + } } } diff --git a/src/components/management/StuffHeader.jsx b/src/components/management/StuffHeader.jsx index 142a15a5..fd81be02 100644 --- a/src/components/management/StuffHeader.jsx +++ b/src/components/management/StuffHeader.jsx @@ -11,12 +11,48 @@ export default function StuffHeader() { const { managementState } = useContext(GlobalDataContext) //물건번호 복사 + // const copyObjectNo = async (objectNo) => { + // await navigator.clipboard.writeText(objectNo) + // alert(getMessage('stuff.detail.header.successCopy')) + // try { + // } catch (error) { + // alert(getMessage('stuff.detail.header.failCopy')) + // } + // } + const copyObjectNo = async (objectNo) => { - await navigator.clipboard.writeText(objectNo) - alert(getMessage('stuff.detail.header.successCopy')) - try { - } catch (error) { - alert(getMessage('stuff.detail.header.failCopy')) + if (navigator.clipboard && window.isSecureContext) { + console.log('확인11', objectNo) + await navigator.clipboard + .writeText(objectNo) + .then(() => { + alert(getMessage('stuff.detail.header.successCopy')) + }) + .catch((err) => { + alert(getMessage('stuff.detail.header.failCopy')) + }) + } else { + console.log('확인22', objectNo) + // Use the 'out of viewport hidden text area' trick + const textArea = document.createElement('textArea') + textArea.value = objectNo + + // Move textarea out of the viewport so it's not visible + textArea.style.position = 'absolute' + textArea.style.left = '-999999px' + + document.body.prepend(textArea) + textArea.select() + + try { + console.log('deprecated::document.execCommand(`copy`)', document.execCommand('copy')) + document.execCommand('copy') + alert(getMessage('stuff.detail.header.successCopy')) + } catch (err) { + alert(getMessage('stuff.detail.header.failCopy')) + } finally { + textArea.remove() + } } }