JavaScript

[Javascipt] Clipboard API 사용

hid1 2023. 3. 4. 17:50

갈틱폰 사이트를 보면 방 입장시 브라우저 표시줄의 주소가 깔끔하다는 것을 볼 수 있다.

로비에서 초대 버튼을 누르면 아래와 같이 쿼리스트링을 통해 채널번호를 명시해둔 걸 볼 수 있다. 초대 링크를 붙여넣기 하면  /lobby로 이동하게 된다. 

(생각해보니 방송 스트리밍 시 주소창을 보고 방의 링크를 알 수 있는 상황이 생길 수 있는 듯)

 

// 초대 링크
https://garticphone.com/ko/?c=채널번호

// 입장시
https://garticphone.com/ko/lobby

 

나는 Next.js를 사용하였기에 useRouter의 push와 replace 메소드 두번째 인수인 as를 통해 브라우저 URL 표시줄에 표시할 경로를 명시할 수 있어 /room에 입장하면 useEffect를 통해 표시줄에는 쿼리스트링을 숨겨두었다.

 const router = useRouter();
 
 router.replace(
      {
        pathname: "/room",
        query: {
          c: roomId,
        },
      },
      "/room"
);

 

이제 이 페이지에 들어올 수 있는 초대 버튼을 만들어야 한다. 이때 Clipboard API를 사용할 수 있다.

텍스트를 복사하기 위해 navigator.clipboard.writeText(텍스트)를 호출하기만 하면 된다.

나는 원래의 주소인 채널번호를 넣어 이 채널번호의 룸으로 들어오겠끔 하였다.

const handleInviteClick = () => {
    navigator.clipboard.writeText(`${window.location.href}?c=${roomId}`);
};

<button onClick={handleInviteClick}>초대</button>

참고로 Clipboard API는 local이나 https 환경에서만 동작한다고 한다.

 

 

 

반응형