Copy to Clipboard

The HTML

							
								<section class="section copy_clipboard">
								    <h2 class="secondary_heading">Copy to Clipboard</h2>
								    <button type="button" class="button copy">Copy URL</button>
								    <div class="success-message" hidden>Copied to the clipboard!</div>
								</section>
							
						

The JavaScript

							
								async function writeClipboardText(text) {
								    try {
								        await navigator.clipboard.writeText(text);
								    } catch (error) {
								        console.error(error.message);
								    }
								}

								function initCopyToClipboard() {
								    const root = document.querySelector(".copy_clipboard");
								    if (!root) return;

								    const URL = window.location.href;
								    const button = root.querySelector(".copy");
								    const success = root.querySelector(".success-message");

								    button.addEventListener("click", () => {
								        writeClipboardText(URL);
								        button.setAttribute("disabled", "");
								        console.log("button disabled");
								        setTimeout(() => {
								            success.removeAttribute("hidden", "");
								            console.log("show success");
								        }, 500);
								        setTimeout(() => {
								            button.removeAttribute("disabled", "");
								            success.setAttribute("hidden", "");
								            console.log("enable button, remove success");
								        }, 5000);
								        return;
								    });
								}
								initCopyToClipboard();