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...
image quote pre code