Membuat Tombol Copy pada Tag PRE dengan JavaScript

Adding a 'copy' button to 'pre' tag with JavaScript - Kalau pada postingan sebelumnya saya sudah membuat tutorial Membuat Double Click to Copy pada Tag Pre Syntax Highlighter, kali ini ada request Membuat Tombol Copy pada Tag PRE seperti di Blog Corkismet.

Membuat Tombol Copy pada tag pre

1. Simpan kode CSS ini, biasanya di atas ]]></b:skin> atau di atas </style>.

pre {position:relative}
.precopy{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;opacity:.6;transition: opacity linear 0.5s;position:absolute;right:0;z-index:2;top:0;background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23989b9f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><g><rect x='5.54615' y='5.54615' width='16.45385' height='16.45385' rx='4'></rect><path d='M171.33311,181.3216v-8.45385a4,4,0,0,1,4-4H183.787' transform='translate(-169.33311 -166.86775)'></path></g></svg>") 40px / 15px no-repeat;background-color:#d9d9d9;color:#555;border:none;font-size:10px;line-height:2.2em;border-radius:0 4px 0 4px;padding:5px 29px 5px 8px}
.precopy:hover{opacity:1}
.precopy.copied{background:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBkYXRhLXByZWZpeD0iZmFzIiBkYXRhLWljb249ImNoZWNrIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtY2hlY2sgZmEtdy0xNiIgcm9sZT0iaW1nIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9IiYjMTA7ICAgIGNvbG9yOiAjMmFmZjMyOyYjMTA7Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0xNzMuODk4IDQzOS40MDRsLTE2Ni40LTE2Ni40Yy05Ljk5Ny05Ljk5Ny05Ljk5Ny0yNi4yMDYgMC0zNi4yMDRsMzYuMjAzLTM2LjIwNGM5Ljk5Ny05Ljk5OCAyNi4yMDctOS45OTggMzYuMjA0IDBMMTkyIDMxMi42OSA0MzIuMDk1IDcyLjU5NmM5Ljk5Ny05Ljk5NyAyNi4yMDctOS45OTcgMzYuMjA0IDBsMzYuMjAzIDM2LjIwNGM5Ljk5NyA5Ljk5NyA5Ljk5NyAyNi4yMDYgMCAzNi4yMDRsLTI5NC40IDI5NC40MDFjLTkuOTk4IDkuOTk3LTI2LjIwNyA5Ljk5Ny0zNi4yMDQtLjAwMXoiLz48L3N2Zz4=') 102px / 15px no-repeat;background-color:#d9d9d9;border:none;font-size:10px;line-height:2.2em;border-radius:0 4px 0 4px;padding:5px 29px 5px 8px}
button{cursor:pointer}

2. Simpan JavaScript ini di atas </body>

<script>/*<![CDATA[*/
let preTag = document.querySelectorAll("pre");
async function copyCode(e) {
    const t = e.srcElement;
    t.innerText = "Copied to Clipboard";
    let o = t.parentElement.querySelector("code").innerText;
    await navigator.clipboard.writeText(o), t.classList.add("copied"), setTimeout((() => {
        t.classList.remove("copied"), t.innerText = "Copy"
    }), 1e3)
}
preTag.forEach((e => {
    if (navigator.clipboard) {
        let t = document.createElement("button");
        t.classList.add("precopy"), t.innerText = "Copy", t.addEventListener("click", copyCode), e.appendChild(t)
    }
}));
/*]]>*/</script>

Format Penulisan

Untuk format penulisan, gunakan tag <pre><code>, contoh seperti ini :

<pre><code>
...kode di sini...
</pre></code>

Untuk memudahkan silahkan gunakan Tool Parse Kode, yang sudah saya sediakan.

Apabila ingin menggunakan Syntax Higlight, silahkan sobat bisa gunakan PRISM atau Highlight.js. Atau bisa menggunakan HLJS Manual.

Apabila ada pertanyaan silahkan share di kolom komentar...

Berita Lebih Baru Berita Lebih Lama
  • IRVAN EFENDI
    Profil: https://www.blogger.com/profile/02345926844144586066
    02 Desember, 2024

    Kang mohon bantuan nya di blog saya tidak work untuk yg di postingan sedangkan untuk di kolom komentar bisa.

    • Ririwa Keren
      Profil:https://www.blogger.com/profile/04064439729103612638
      02 Desember, 2024

      bantu jawab... biasanya masalahnya di selector

    • IRVAN EFENDI
      Profil:https://www.blogger.com/profile/02345926844144586066
      02 Desember, 2024

      cara benerin nya gimana bang

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      04 Desember, 2024

      Saya ga bisa akses profilnya, jadi ga keliatan, coba via Email aja

Tambahkan Komentar
comment url
Terima kasih telah berkomentar di Blog Kang Ismet.
  • Untuk menyisipkan Gambar, Kode, atau Kutipan silahkan klik Tab Sisipkan di atas.
  • Emoji yang bisa digunakan pada komentar :), :D, :( <3, :love dan :top
  • Untuk melihat Komentar yang telah ditambah sisipan kunjungi DEMO
Masukkan URL Gambar atau Potongan Kode, atau Quote, lalu klik tombol yang kamu inginkan untuk di-parse. Klik tombol Salin Kode! lalu paste ke kolom komentar.


image quote pre code
4 Komentar