부트스트랩5(Bootstrap5) 현재 주소 복사 버튼 만들기

· 조회수 10

현재 보고 있는 페이지의 주소를 복사하는 버튼으로 데스크탑과 모바일 전부 적용할 수 있습니다.
부트스트랩5(Bootstrap5) 파일(js, css)가 이미 포함되어 있을때는 'Bootstrap 5 / 아이콘' 아래의  링크 부분을 생략하면 됩니다.
버튼으로 되어있지만 버튼 이외에 쓰고 싶을때는 속성에 id="copyBtn"만 붙여주면 됩니다.
 

<!-- Bootstrap 5 / 아이콘 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

<!-- 복사 버튼 -->
<button id="copyBtn" class="btn btn-outline-primary btn-sm">
  <i class="bi bi-clipboard"></i> 주소 복사
</button>

<!-- 토스트 메시지 -->
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 1055;">
  <div id="copyToast" class="toast align-items-center text-bg-success border-0" role="alert">
    <div class="d-flex">
      <div class="toast-body">
        복사되었습니다.
      </div>
      <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast"></button>
    </div>
  </div>
</div>

<!-- 복사 기능 스크립트 -->
<script>
document.getElementById('copyBtn').addEventListener('click', function() {
  const textToCopy = window.location.href; // 현재 페이지 주소 복사

  if (navigator.clipboard && window.isSecureContext) {
    navigator.clipboard.writeText(textToCopy).then(showToast);
  } else {
    const tempInput = document.createElement('textarea');
    tempInput.value = textToCopy;
    document.body.appendChild(tempInput);
    tempInput.select();
    try {
      document.execCommand('copy');
      showToast();
    } catch (err) {
      alert('복사 실패: ' + err);
    }
    document.body.removeChild(tempInput);
  }

  function showToast() {
    const toastEl = document.getElementById('copyToast');
    const toast = new bootstrap.Toast(toastEl, { delay: 2000 });
    toast.show();
  }
});
</script>

"선의 끝은 악이요, 악의 끝은 선이다. - 라 로시코프 , "

- 선, 악 -

북마크목록