clipboard.js를 이용한 클립보드에 텍스트 복사

개발 건을 진행하면서 이미지 등의 파일 url 정보를 클립보드로 복사해야 할 상황이 생겨서 clipboard.js를 사용하게 됐다. 전에는 input 이나 textarea의 데이터를 클립보드로 복사하는 데 사용했는데 이번에는 a 태그의 href 값을 클립보드로 복사해야만 하는 상황이었다. 기본 마크업은 아래와 같다.

<link href="https://unpkg.com/@primer/css/dist/primer.css" rel="stylesheet" />
<script src="https://unpkg.com/clipboard@2/dist/clipboard.min.js"></script>

primer.css 는 tooltip 효과를 위해 추가됐다. 참고 : https://primer.style/css/components/tooltips

<a href="http://example.com/images/logo.png" class="copy-link">Link</a>

url 정보를 클립보드로 복사하기 위한 스크립트 코드는 아래와 같다.

<script>
$(function() {
    // a 태그 클릭 때 링크 이동 금지
    $(".copy-link").on("click", function(e) {
        e.preventDefault();
    });

    // tooltip 사라지게
    $(".copy-link").on("mouseleave, blur", function(e) {
        $(this).removeClass("tooltipped tooltipped-s").removeAttr("aria-label");
    });
});

var clipboard = new ClipboardJS(".copy-link", {
    text: function(trigger) {
        return trigger.getAttribute("href");
    }
});

clipboard.on('success', function(e) {
    // tooltip 표시    
    $(e.trigger).addClass("tooltipped tooltipped-s").attr("aria-label", "Copied!");
});
</script>

a 태그는 클릭 때 링크 이동을 하기 때문에 이것을 막는 코드와 clipboard.js 관련 코드, tooltip 관련 코드 등이다.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.